1.Qt之hello world

一、新建工程 项目

1.文件-新建

选择Qt Widgets Application创建一个桌面的应用

3.选择一个已经构建好的kit

双击Forms下的ui文件,进入编辑界面

注意到 对象和类的名字 MainWindow继承QMainWindow

首先我们来看mainwindow.h这个头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

首先是在Ui这个命名空间中前置声明了类MainWindow,也就是窗口对象

用前置声明的类来定义一个指针变量ui

private:
    Ui::MainWindow *ui;

再来看实现的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_mainwindow.h这个文件,这是根据ui文件的名字自动生成的。

然后调用setupUi

 ui->setupUi(this);

setupUi(this)是由.ui文件生成的类的构造函数,这个函数的作用是对界面进行初始化,它按照我们在Qt设计器里设计的样子把窗体画出来,把我们在Qt设计器里面定义的信号和槽建立起来。也可以说,setupUi 是我们画界面和写程序之间的桥梁。

说了这么多,回到main函数

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

前两行是c++的include语句,这里我们引入的是QApplication类,main()函数中第一句创建一个QApplication的实力,对于Qt的

Qt 程序来说,main()函数一般以创建 application 对象(GUI 程序是QApplication,非 GUI 程序是QCoreApplicationQApplication实际上是QCoreApplication的子类。)

main()函数最后,调用app.exec(),开启事件循环。我们现在可以简单地将事件循环理解成一段无限循环。正因为如此,我们在栈上构建了<ainwindow对象,却能够一直显示在那里(试想,如果不是无限循环,main()函数立刻会退出,QLabel对象当然也就直接析构了)。

在新版本的 Qt 中,app.exec()的实现机制确定,当最后一个可视组件关闭之后,主事件循环(也就是app.exec())才会退出,main()函数结束(此时会销毁app

发布了24 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/yonggandess/article/details/103012146