1、首先,我们需要新建一个Qt程序。点击文件→新建文件或项目。

2、在弹出的子窗口中,选择Application下的Qt Widgets Application,再点击Choose。

3、接着,填写项目名称和存放的路径。

4、选择要使用的编译器

5、选择基本类的基类,并填写基本类的类名

QMainWindow主要用于PC端,即带菜单栏的windows窗口;

QWidget是其他所有用户界面元素的基类;

QDialog是对话框,用于执行短期任何或者与用户进行交互。

假设我们指定的基本类类名为className,工程创建完毕后,工程目录下会生成className.h、className.cpp以及main.cpp三个主要的文件。

6、至此,一个Qt Widgets Application 创建完毕。

Qt 的框架

以下是创建一个application后main.cpp文件中自动生成的内容,MyWidget是创建项目时我们指定的基本类名称。

//main.cpp
#include "mywidget.h"
//QApplication应用程序类
//Qt头文件没有.h
//头文件和类名一样
#include <QApplication>
int main(int argc, char *argv[])
    //有且只有一个应用程序类的对象,也就是这里的a
    QApplication a(argc, argv);
    //MyWidget继承于QWidget,QWidget是一个窗口基类
    //所以MyWidget也是窗口类
    //w就是一个窗口对象
    MyWidget w;
    //窗口创建默认是隐藏的,需要人为显示,用show方法来显示它
    w.show();
    //这一句等同于
    //a.exec();
    //return 0;
    return a.exec();

P.S:exec()的作用是利用while让程序一直执行,直到用户操作中断这个循环。

1)常规做法,return a.exec()

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

如图所示,显示一个空白的窗口。 

2)将 return a.exec(); 改为return 0;

发现窗口会一闪而过。

原因是直接 return 0 就达不到事件循环并显示的效果,程序直接退出了,而exec就是在这里进行了循环,一直循环处理着用户和系统的事件。

  • 在return a.exec(); 前面加上一个死循环 while(1);
  • 鼠标指针变为加载中,并且窗口无法关闭。

    exec() 的作用:

    进入时间循环;

    wait,直到响应a可能的输入;

    QT接收和处理用户及系统交代的事件(消息),并传递到各个窗口;

    程序遇到 exit() 退出时,机会返回 exec() 的值。

    【转自:0x9.me/b0WEM

    下面是Qt项目的基本框架

    //main.cpp
    #include "mywidget.h"
    #include <QApplication>
    int main(int argc, char *argv[])
        QApplication a(argc, argv);
        //自己写的内容
        return a.exec();
    
    //mywidget.cpp
    #ifndef MYWIDGET_H
    #define MYWIDGET_H
    #include <QWidget>
    class MyWidget : public QWidget
        Q_OBJECT    //信号与槽时需要使
    public:
        MyWidget(QWidget *parent = 0);
        ~MyWidget();
    #endif // MYWIDGET_H
    

    P.S:强烈建议所有QObject的子类都使用Q_OBJECT宏,不管实际上是否使用信号和槽,以及属性。

    【详见:blog.csdn.net/liang198908…

    项目文件(.pro)

    .pro文件用#来进行注释,注释范围到该行末尾。

    使用头文件时,要在工程项目文件中加入对应的模块(找到头文件,按F1,在帮助文档中会显示对应的模块)。

    比如使用QWidget需要在.pro文件中加入 QT += core gui

    #-------------------------------------------------
    # Project created by QtCreator 2020-06-26T23:46:04
    #-------------------------------------------------
    QT       += core gui
    #高于4的版本,添加QT += widgets,为了兼容Qt4
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    #应用程序的名字,可以修改,相应的.exe名称也会同步更新
    TARGET = 01_QtTest
    #指定Makefile的类型,app
    TEMPLATE = app
    #源文件 .cpp文件
    SOURCES += main.cpp\
            mywidget.cpp
    #头文件 .h文件
    HEADERS  += mywidget.h
    

    创建一个空的 Qt 程序(hello qt)

    1、创建一个空项目,点击New Project-其他项目-empty qmake project。创建后只有一个.pro文件,并且为空。

    2、先在.pro文件中添加模块,写入

    QT += widgets
    

    3、然后创建main.cpp文件,右键项目→添加新文件→-c++/c++ source file。

    4、写入以下代码,至此我们自己实现了一个简单的Widget窗口。

    #include <QApplication>
    #include <QWidget>    //窗口控件基类
    int main(int argc,char **argv){
        QApplication app(argc,argv);
        QWidget w;
        w.setWindowTitle("helloqt");    //设置窗口标题
        w.show();    //显示窗口
        app.exec();
        return 0;
    

    P.S:build-文件夹在编译时自动生成

    标签: