QT Creator应用程序开发——QT程序设计基本知识

简介: QT Creator应用程序开发——QT程序设计基本知识

一、Application模板介绍


在新建文件或项目时,Application模板内有以下几项:

1667133146526.jpg

1、Qt Widgets Application

Qt小部件应用程序,它支持桌面平台有图形用户界面(GUI)的应用程序,该GUI设计基于C++语言,采用Qt提供的一套C++类库;

2、Qt Console Application

Qt 控制台应用程序,无GUI页面,用于学习C/C++语言;

3、Qt Quick Application

Qt快速应用程序,是Qt支持的一套GUI开发架构,页面设计采用QML语言,程序架构采用C++语言,它一般用于移动设备或嵌入式设备上无边框的应用程序设计;

4、Qt Quick Controls 2 Application

基于Qt Quick Controls 2组件可部署的Qt Quick 2应用程序;

5、Qt Canvas 3D Application

Qt画布3D应用程序,用于创建Qt Canvas 3D QML项目,基于QML语言的页面设计,支持3D画布。


二、选择类信息


创建的窗口时,在基本类信息时,系统提供的基类有以下三种可以选择:

1667133176373.jpg

1、QMainWindow

主窗口类,具有主菜单栏、工具栏和状态栏,它类似于一般的应用程序的主窗口;

2、QWidget

为所有具有可视页面类的基类,选择QWidget创建的页面对各种页面组件都支持;

3、QDialog

对话框类,可建立一个基于对话框的页面。

1667133190407.jpg


三、Qt Widgets Application项目示例


我们创建一个Qt Widgets Application项目后左侧有个窗口,里面包含几个目录和文件,在QT中可以打开多个项目,但是只有一个活动项目,活动项目的名被粗体标黑,如下,这个项目的名称为“2-24”:

1667133200680.jpg

1、2-24.pro

代表这是一个pro 项目管理文件,其中包括一些对项目的设置项;

2、Headers

.h 头文件,该节点包含所有的C++头文件,其中头文件mainwindow.h是主窗口类的头文件;

3、Sources

.cpp 源文件,该节点包含所有的C++源文件,其中main.cpp是主函数文件,是应用程序的入口,mainwindow.cpp是主窗口类的实现文件,与mainwindow.h头文件相对应;

4、Forms

.ui 页面文件,该节点包含所有的页面文件,mainwindow.ui是主窗口的页面文件,这些页面文件是文本文件,通过XML语言描述页面的组成。

当鼠标点击pro、Headers、Sources文件时会显示源代码文件,如下:

1667133213180.jpg

或者可以点击下面的打开文档来打开相应的源代码文件:

1667133223960.jpg

当点击Form文件会显示窗体设计页面,如下:

1667133233456.jpg


(一).pro 项目管理文件


在QT中默认情况下,每个项目都含有一个与项目名称同名的项目管理文件,且每个项目至少包含一个.pro文件,用于存储与当前有关的配置信息,其中的信息告知编译器如何编译当前项目。

一个刚刚创建好的QT项目,其中的.pro文件并不是空的,而包含一些基本的配置信息,如下:

1667133245412.jpg

QT会自动修改该文件的内容,不过有时候也要手动修改,比如使用第三方库时,需要手动在.pro文件中修改。

.pro配置文件中常见的配置项如下:

1、QT

每个QT GUI项目中,都默认包含Core和GUI两个默认模块,前者包含QT GUI页面开发的核心模块,后者提供用于开发GUI应用程序所必要的一些类。

QT       += core gui

1667133266156.jpg

配置信息由三部分组成,如下图:

1667133278258.jpg

除了这两个默认的core gui模块之外,还有SQL(包含数据库相关的类)、Widgets(构建页面的所有控件类)、Multimedia(提供音频、视频等功能的类)等模块,若要使用这些模块,则需在.pro文件中进行修改,例如添加与数据库相关的类,如下代码:

QT       += sql//添加包含数据库相关的类

1667133297375.jpg


2、greaterThan()

QT版本大于4以上都包含widgets模块,如下代码:

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets


3、CONFIG

另外有的还包含C++标准,例如下面就表示使用的是C++11标准,如下代码:

CONFIG += c++11//使用C++11的标准


4、TARGET、TEMPLATE

TARGET用于指定程序运行后的可执行文件(.exe)的名称,TEMPLATE指定如何运行当前程序,其默认值是app(表示是一个应用程序),通常还有lib(表示将当前程序编译成库文件),如下代码,这里指定的可执行文件名称为untitled1:

TARGET = untitled1//目标 生成.exe程序的名称
TEMPLATE = app//模板 应用程序模板application


5、SORCES、HEADERS、FORMS

SORCES、HEADERS、FORMS分别指定项目中所包含的.cpp源文件、.h头文件、.ui页面文件,如下:

1667133332076.jpg

6、INCLUDEPATH

INCLUDEPATH用于指定.h头文件的存储路径。


(二).h 头文件


mainwindow.h为主窗口,由Q_OBJECT宏、构造函数、析构函数三部分组成,Q_OBJECT表示允许类中使用信号和槽的机制,代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>//包含头文件QMainWindow窗口类
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow//继承语法
{
    Q_OBJECT//Q_OBJECT宏,是一个已经定义好的宏,\
    允许类中使用信号和槽的机制
public:
    explicit MainWindow(QWidget *parent = 0);//带参的构造函数,QWidget是所有组件的基类,\
    通过*parent指针可以为当前窗口指定其父窗口
    ~MainWindow();//析构函数
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H


(三).cpp 源文件


.cpp源文件中包含main().cpp主函数,一个QT GUI应用程序的main()基本格式,如下:

#include "mainwindow.h"
#include <QApplication>//包含一个应用程序类的头文件
//main程序入口
int main(int argc, char *argv[])//argc命令行变量的数量,\
argv命令行变量的数组
{
    QApplication a(argc, argv);//a应用程序对象,在QT中\
    应用程序对象有且只有一个
    MainWindow w;//窗口对象
    w.show();//窗口对象默认不会显示,必须要调用show方法显示窗口
    return a.exec();//让应用程序对象a进入消息循环
}


另外还有一个从QMainWindow继承的主窗口类,即mainwindow.cpp,该类的定义部分位于mainwindow.h头文件中,实现部分位于mainwindow.cpp源文件,如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
MainWindow::~MainWindow()
{
    delete ui;
}


(四).ui 页面文件


点击.ui页面文件,即可跳到页面设计,如下其中各框的用途如下:

1667133399374.jpg


相关文章
|
6月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
219 1
|
5月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
156 0
|
4月前
|
IDE 开发工具 C++
qt creator + vs2019编译记录
本文记录了作者在使用qt creator和vs2019编译项目时遇到的困难和解决方案,包括编译环境设置、qt creator编译脚本的成功案例、不带Ninja的编译脚本问题、错误示范以及相关参考链接。
135 0
qt creator + vs2019编译记录
|
4月前
Qt开发
Qt开发
|
4月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
109 0
|
5月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
244 2
Qt开发网络嗅探器02
Qt开发网络嗅探器02
|
5月前
|
存储 运维 监控
Qt开发网络嗅探器01
Qt开发网络嗅探器01
|
5月前
|
网络协议 容器
Qt开发网络嗅探器03
Qt开发网络嗅探器03
|
5月前
【qt】多窗口开发
【qt】多窗口开发
88 0

推荐镜像

更多