【Qt】QtCreator新建QtWidgetsApplication

【Qt】QtCreator新建QtWidgetsApplication

1、背景

操作系统:windows10专业版。
Qt版本:qt-opensource-windows-x86-msvc2013_64-5.7.1.exe
注意:安装了该exe可执行文件,就自动安装了qtcreator5.7.1。
QtCreator是开发Qt程序的IDE。

本博客介绍最基本的QtCreator使用,
即新建项目,选择Application(应用程序)–>“Qt Widgets Application”

2、新建项目

新建的项目是Qt Widgets Application。

step-1:点击菜单栏文件–>新建文件或项目
在这里插入图片描述

step-2:模板–>项目(Application)–>Qt Widgets Application
在这里插入图片描述

step-3:填写项目名称以及项目目录
在这里插入图片描述

step-4:选择编译器工具包Kit
在这里插入图片描述

step-5: 填写类名以及选择基类
注意基类一共有3种,分别是:QMainWindow、QWidget、QDialog;
如下图,基类选择的是QMainWindow
在这里插入图片描述

step-6: 点击完成
在这里插入图片描述

3、项目文件

以上步骤完成Qt Widgets Application项目的新建,将在选择的目录生成项目文件,分别如下:

项目文件QtWidgetsApp.pro:
在这里插入图片描述

继承窗体界面class的头文件mainwindow.h:
在这里插入图片描述

继承窗体界面class的源文件mainwindow.cpp:
在这里插入图片描述

程序入口函数main函数的源文件main.cpp:
在这里插入图片描述

界面文件,即xml格式的窗体文件mainwindow.ui:
在这里插入图片描述

4、编译说明

4.1、关于ui_mainwindow.h说明:
可以看到QtWidgetApp.pro文件内容中:

FORMS    += mainwindow.ui

对应的是mainwindow.cpp源代码中的第2行:

#include "ui_mainwindow.h"

ui文件是xml格式的,Qt编译时,先用uic.exe工具将mainwindow.ui编译生成ui_mainwindow.h头文件。

而mainwindow.cpp源代码中的列表初始化部分如下:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);
}

冒号后面的两行代码,是C++的列表初始化。其中QMainWindow(parent) 是父类构造函数的初始化列表操作,即显式调用基类(父类)的构造函数。

ui(new Ui::MainWindow) 是子类的成员初始化,即初始化ui指针,ui指针在mainwindow.h中定义的。

可以改成如下写法:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    
    
    ui=new Ui::MainWindow;
    ui->setupUi(this);
}

这个头文件ui_mainwindow.h是c++类,可以通过
uic.exe mainwindow.ui -o ui_mainwindow.h得到,内容如下:

/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.7.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
    
    
public:
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QWidget *centralWidget;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *MainWindow)
    {
    
    
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QStringLiteral("MainWindow"));
        MainWindow->resize(400, 300);
        menuBar = new QMenuBar(MainWindow);
        menuBar->setObjectName(QStringLiteral("menuBar"));
        MainWindow->setMenuBar(menuBar);
        mainToolBar = new QToolBar(MainWindow);
        mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
        MainWindow->addToolBar(mainToolBar);
        centralWidget = new QWidget(MainWindow);
        centralWidget->setObjectName(QStringLiteral("centralWidget"));
        MainWindow->setCentralWidget(centralWidget);
        statusBar = new QStatusBar(MainWindow);
        statusBar->setObjectName(QStringLiteral("statusBar"));
        MainWindow->setStatusBar(statusBar);

        retranslateUi(MainWindow);

        QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
    
    
        MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", Q_NULLPTR));
    } // retranslateUi

};

namespace Ui {
    
    
    class MainWindow: public Ui_MainWindow {
    
    };
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H

猜你喜欢

转载自blog.csdn.net/jn10010537/article/details/128607292
今日推荐