Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt Creator是跨平台的Qt集成开发环境。
创建项目
Qt的一些界面,初学时一般选择Qt Widgets Application,将会创建一个窗口类应用程序
非Qt项目,Plain C Application和Plain C++ Application是纯C/C++项目。
创建项目的时候 QWidget,QMainWindow,QDialog,QWidget是所有能看到的窗口或者控件的父类,QMainWindow和QDialog都继承自它。
在这里可以自己更改Class name,然后头文件和源文件系统会自动帮我们修改成和Classname相同的前缀名。
代码编辑区
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class Widget : public QWidget//Widget继承自QWidget
{
Q_OBJECT//宏,引入qt信号和槽的一个宏
public:
//parent窗口指针,父窗口对象的指针
//parent为0/NULL,表示当前窗口对象是顶层窗口
//顶层窗口就是在任务栏可以找到的窗口
Widget(QWidget *parent = nullptr);
~Widget();
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>
#include<iostream>
int main(int argc, char *argv[])
{
//创建一个应用程序对象
QApplication a(argc, argv);
//窗口类的一个对象
Widget w;
//把窗口显示出来
w.show();
// return a.exec();
std::cout<<"before exec"<<std::endl;
a.exec();//当不关闭窗口时,程序就在这里
/*
* 死循环让程序一直运行,生命循环,消息循环
* while(1)
* {
* if(点击x按钮)
* break;
* if(点击最小化按钮)
* 最小化动作;
* }
*/
std::cout<<"after exec"<<std::endl;
return 0;
}
/*
* main函数中,QApplication就是Qt里边每个应用程序有且仅有一个的应用程序对象
*
*
*/
widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{}
Widget::~Widget() {}
/*
*创建项目的时候 QWidget,QMainWindow,QDialog
*QWidget是所有能看到的窗口或者控件的父类,QMainWindow和QDialog都继承自它
*
*
*/
还有,如果我们的构建系统配置文件,如果选择的构建工具是qmake,qmake适用于Qt项目的构建,那么在代码编辑区中还会生成一份后缀名为.pro的文件
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
hellowidget.cpp
HEADERS += \
hellowidget.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
# 指定项目使用的Qt模块,这里指定了core和gui模块。
QT += core gui
# 如果Qt的主要版本号大于4,则添加widgets模块。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 设置编译器标准为C++17。
CONFIG += c++17
# 下面的行可以让你的代码在使用已弃用API时编译失败。
# 若要启用此功能,取消注释下面的行。
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # 禁用所有在Qt 6.0.0之前弃用的API
# 指定源文件列表。
SOURCES += \
main.cpp \
hellowidget.cpp
# 指定头文件列表。
HEADERS += \
hellowidget.h
# 默认的部署规则。
# 对于QNX平台,指定目标路径为/tmp/${TARGET}/bin。
qnx: target.path = /tmp/$${TARGET}/bin
# 对于其他Unix系统(不包括Android),指定目标路径为/opt/${TARGET}/bin。
else: unix:!android: target.path = /opt/$${TARGET}/bin
# 如果target.path不是空值,则安装目标到指定路径。
!isEmpty(target.path): INSTALLS += target
运行后产生这样的窗口,一个白色的窗口界面,我们需要通过设计进行让界面变得更加丰富。
进入设计模式:双击.ui文件即可进入设计模式
相关快捷键
Ctrl+R:编译并运行
Ctrl+B:执行编译操作
Ctrl+Tab:在不同文件之间进行切换
Ctrl+S:保存
Ctrl+/:快速注释
Ctrl+A:全选
Ctrl+C:复制
Ctrl+V:粘贴
Ctrl+X:剪切
Ctrl+鼠标上下滑动:页面放大/缩小