二、QT文件介绍
1.(.pro文件)项目管理文件
以不加UI库的项目为例
1 QT += core gui 2 3 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 4 5 CONFIG += c++11 6 7 DEFINES += QT_DEPRECATED_WARNINGS 8 9 SOURCES += \ 10 main.cpp \ 11 mywidget.cpp 12 13 HEADERS += \ 14 mywidget.h 15 16 # Default rules for deployment. 17 qnx: target.path = /tmp/$${TARGET}/bin 18 else: unix:!android: target.path = /opt/$${TARGET}/bin 19 !isEmpty(target.path): INSTALLS += target
配置项 | 含义 |
QT |
指定项目中用到的所有模块 core模块包含了QT GUI界面开发的核心功能,其他所有模块都需要依赖于此模块 gui模块提供了用于开发GUI应用程序的必要一些类 SQL包含操作数据库相关的类 Widgets包含构建界面的所有控件类 Multimedia包含提供音频、视频等功能的类 |
greaterThan(QT_MAJOR_VERSION,4):QT+=widgets |
如果QT版本大于4,则添加widgets模块 |
TARGET | 指定程序成功运行后生成的可执行文件的名称 |
TEMPLATE |
指定如何运行当前程序,默认值为app,表示当前程序是一个应用程序,可以直接编译、运行 常用值还有lib,表示将当前程序编译成库文件 |
DEFINES | 在程序中新定义一个指定的宏,如同在程序中添加#define xxx语句 |
SOURCES | 指定项目中包含的所有.cpp源文件 |
HEADERS | 指定项目中包含的所有.h头文件 |
FORMS | 指定项目中包含的ui文件 |
INCLUDEPATH | 指定头文件的存储路径 |
CONFIG |
经常使用的值 release:以release模式编译程序 debug:以debug模式编译程序 warn_on:编译器输出尽可能多的警告 c++11:启用C++11标准支持 |
2.(main.cpp)主文件
1 #include "mywidget.h" 2 3 #include <QApplication>//QApplication类的头文件 4 5 //argc->argument_count,argv->argument_value 6 int main(int argc, char *argv[]) 7 { 8 QApplication a(argc, argv);//创建QApplication对象,每个应用程序都必须有且仅有一个此对象 9 MyWidget w;//创建主窗口对象 10 w.show();//调用show方法,使图形对象显示在屏幕 11 return a.exec();//阻塞,进入消息循环,等待程序结束pause 12 }
3.(.h)头文件
1 #ifndef MYWIDGET_H//宏定义,防止重复包含 2 #define MYWIDGET_H 3 4 #include <QWidget> 5 6 class MyWidget : public QWidget//此类继承于QWidget类 7 { 8 Q_OBJECT//所有使用到信号的类都需要添加此宏 9 10 public://公共属性和方法定义/实现区 11 MyWidget(QWidget *parent = nullptr);//构造方法定义 12 ~MyWidget();//析构函数定义 13 }; 14 #endif // MYWIDGET_H
4.(.cpp)源文件
1 #include "mywidget.h" 3 MyWidget::MyWidget(QWidget *parent) 4 : QWidget(parent)//构造函数实现 5 { 6 } 7 8 //析构函数最后执行的函数,在这里释放空间 9 MyWidget::~MyWidget() 10 { 11 }
5.初始化效果图(Widget类型)
6.例子:添加一个按钮,点击此按钮后按钮消失。
1 #include "mywidget.h" 2 #include <QPushButton> 3 MyWidget::MyWidget(QWidget *parent) 4 : QWidget(parent)//构造函数实现 5 { 6 QPushButton *btn=new QPushButton;//创建对象,指针类型 7 btn->resize(200,100);//设置按钮大小 8 this->resize(900,500);//在MyWidget类中进行设置,this表示本类,设置主窗口大小 9 btn->setParent(this);//设置主窗口为按钮的父窗口 10 btn->show();//显示按钮组件 11 btn->move(350,200);//移动按钮 12 btn->setText("按钮");//设置按钮显示文本 13 14 //QObject::connect(btn,&QPushButton::clicked,btn,&QPushButton::hide); 15 QObject::connect(btn,SIGNAL(clicked()),btn,SLOT(hide()));//两种方式绑定信号和槽 16 } 17 18 //析构函数最后执行的函数,在这里释放空间 19 MyWidget::~MyWidget() 20 { 21 }
效果展示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!