一、创建一个简单的Qt程序
启动QtCreate:New Project -> Application -> Qt Widgets Application -> Choose -> 文件名不能使用中文!
基类选择:QWidget
快捷键 和 命名规范
//快捷键 注释 ctrl + / 运行 ctrl + r 编译 ctrl + b 字体缩放 ctrl + 鼠标滚轮 查找 ctrl + f 整行移动 ctrl + shift + ↑或者↓ 帮助文档 F1 或 左侧按钮 自动对齐 ctrl + i 同名之间的.h 和 .cpp切换 F4 //命名规范 类名 首字母大写,单词和单词之间首字母大写 函数名 变量名 首字母小写,单词和单词之间首字母大写
widget
widget,窗体部件,该词起源于window gadget 窗口配件,这两个词,相当于Windows系统中的控件(control)和容器(container)
按钮、菜单、滚动条和框架都是窗口部件,窗口部件也可以包含其他窗口部件
工程文件 .pro( 自动生成的 )
#------------------------------------------------- # # Project created by QtCreator 2022-04-11T14:26:56 # #------------------------------------------------- QT += core gui //QT 包含的模块: core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = HelloQt //目标生成的.exe程序的名称 TEMPLATE = app //模板 应用程序模板 Application SOURCES += \ //源文件 main.cpp \ widget.cpp HEADERS += \ //头文件 widget.h
头文件.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> //包含头文件QWiget窗口类 class Widget : public QWidget //继承QWidget { Q_OBJECT //Q_OBJECT宏,允许类中使用信号和槽的机制 public: Widget(QWidget *parent = 0); //构造函数 ~Widget(); }; #endif // WIDGET_H
.cpp 文件
#include "widget.h" #include <QLabel> //包含头文件QLabel Widget::Widget(QWidget *parent) : QWidget(parent) { //创建一个QLabel QLabel *label = new QLabel("Hello Qt!"); //让label对象 依赖widget窗口中 label->setParent(this); } Widget::~Widget() { }
main文件(入口 )
#include "widget.h" #include <QApplication> //包含一个应用程序类的头文件 //main程序入口, argc命令行变量的数量 argv命令行变量的数组 int main(int argc, char *argv[]) { //a是应用程序的对象,在Qt中,应用程序对象,有且仅有一个 QApplication a(argc, argv); //窗口对象,父类是QWiget Widget w; //窗口对象默认不会显示,必须要调用 show方法显示窗口 w.show(); //让应用程序对象进入消息循环 //让代码阻塞到这行 return a.exec(); }
二、建立连接
Qt的窗口部件可以发射信号(signal),信号可以与函数 ( 在 这里称为槽,slot) 相连接,以便在发射信号时,槽可以得到自动执行
#include "widget.h" #include <QLabel> #include <QPushButton> Widget::Widget(QWidget *parent) : QWidget(parent) { QLabel *label = new QLabel("Hello Qt!"); label->setParent(this);
QPushButton *button = new QPushButton("退出!"); button->setParent(this);
button->move(0,50); QObject::connect( button, &QPushButton::clicked , this, &Widget::close ); } Widget::~Widget() { }
三、窗口部件的布局
用布局(layout)来管理窗口部件的几何形状