当前位置: 首页 > news >正文

【实操教程】如何开始用Qt Widgets编程?(一)

Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

在本文中,我们通过使用C++和Qt Widgets模块实现一个简单的记事本应用程序来学习基本的Qt知识,该应用程序是一个小型的文本编辑器,允许您创建文本文件、保存、打印或重新打开并在此编辑它,还可以设置要使用的字体。

【实操干货】如何开始用Qt Widgets编程?(一)

点击获取Qt Widget组件下载(Q技术交流:166830288)

运行示例

要从Qt Creator中运行示例,请打开Welcome模式并从Examples中选择示例。

创建Notepad(记事本)项目

在Qt Creator中设置一个新项目是由一个向导帮助的,该向导指导您逐步完成项目创建过程。向导提示输入特定类型项目所需的设置,并创建项目。

注意:Qt Creator中的UI文本和生成文件的内容取决于您使用的Qt Creator版本。

【实操干货】如何开始用Qt Widgets编程?(一)

要创建记事本项目,请选择File > New Project > Application (Qt) > Qt Widgets Application > Choose,然后按照想到的说明进行操作。在Class Information(类信息)对话框总,输入Notepad作为类名,并选择QMainWindow作为基类。

【实操干货】如何开始用Qt Widgets编程?(一)

Qt Widgets Application向导创建一个项目,其中包含一个主源文件和一组指定用户界面的文件(Notepad widget):

  • CMakeLists.txt - 项目文件。
  • main.cpp - 应用程序的主要源文件。
  • notepad.cpp - Notepad小部件的notepad类源文件。
  • notepad.h - Notepad小部件的notepad类头文件。
  • notepad. ui - Notepad小部件的UI表单。

这些文件附带了必要的模板代码,使您能够构建和运行项目,我们将在之后的几节中仔细研究文件内容。

主源文件

向导在main.cpp文件中生成以下代码:

#include "notepad.h"#include <QApplication>int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Notepad w;
w.show();
return a.exec();
}

我们将逐行浏览代码,下面几行包括Notepad小部件和QApplication的头文件,所有Qt类都有一个以它们命名的头文件。

#include "notepad.h"#include <QApplication>

下面这行定义了main函数,它是所有基于C和c++的应用程序的入口点:

int main(int argc, char *argv[])

下面这行代码创建了一个QApplication 对象,这个对象管理应用程序范围内的资源,并且是运行任何使用Qt Widgets的Qt程序所必需的。它用argv中运行的argc命令行参数构造一个应用程序对象。(对于不使用Qt Widgets的GUI应用程序,您可以使用QGuiApplication代替。)

QApplication a(argc, argv);

下一行代码创建Notepad对象,这是向导为其创建类和UI文件的对象。用户界面包含可视化元素,这些元素在Qt中被称为小部件,小部件的示例有文本编辑、滚动条、标签和单选按钮。一个小部件也可以是其他小部件的容器;例如,对话框或主应用程序窗口。

Notepad w;

下面一行显示了Notepad小部件在屏幕上的窗口,小部件还可以用作容器。一个例子是QMainWindow,它通常包含几种类型的小部件。默认情况下,小部件是不可见的;函数show()使小部件可见。

w.show();

下面一行使QApplication进入它的事件循环,当Qt应用程序运行时,会生成事件并将其发送给应用程序的小部件,事件的示例是鼠标按压和按键。

return a.exec();

http://www.lryc.cn/news/107007.html

相关文章:

  • openmp和avx配置
  • 18 个JS优化技巧,可以解决 90% 的屎山代码!!!
  • go逆向符号恢复
  • 论文阅读- Uncovering Coordinated Networks on Social Media:Methods and Case Studies
  • 应急响应-Linux
  • 利用spinal的伴生对象简化集成rtl代码过程
  • C# Blazor 学习笔记(7):组件嵌套开发
  • DAY1,C高级(命令,Linux的文件系统,软、硬链接文件)
  • Race竞争型漏洞
  • 基于 FFlogs API 快速实现的 logs 颜色查询小爬虫
  • 【牛客】统计字符
  • 测试|Junit相关内容
  • 19-2.vuex
  • 微信小程序 选择年和月以及回显 使用picker-view组件
  • 助力工业物联网,工业大数据之ST层的设计【二十五】
  • MySQL实践——参数SQL_SLAVE_SKIP_COUNTER的奥秘
  • 小程序面试题
  • 微信小程序接入腾讯云天御验证码
  • Docker build 命令详解
  • 基于Translators的多语言翻译解决方案
  • Unity 性能优化五:渲染模块压力
  • Redis数据库 | 事务、持久化
  • 浅析大数据时代下的视频技术发展趋势以及AI加持下视频场景应用
  • TensorRT学习笔记--基于YoloV8检测图片和视频
  • 【C++】开源:matplotlib-cpp静态图表库配置与使用
  • 香港IT软件开发服务公司Alpha Technology 申请纳斯达克IPO上市
  • JavaScript:数组深拷贝
  • 干翻Dubbo系列第七篇:@EnableDubbo、@DubboService、@DubboReference注解的作用
  • clickhouse断电重启故障解决方案
  • Spring学习笔记之Bean的实例化方式