【QT】《Qt5.9 C++开发指南》开篇熟悉下UI QTCN
前言第一次使用QT,算是有趣吧
前言
下载安装了几次QT,因为不学都删除了。今天又打算下载,可是在线的安装程序运行总卡在2%~3%,说什么存档有问题,连接不了什么的。然后去找离线的安装包,怎么也下载不了。我的游览器也该换了,虽然是谷歌游览器,也许不是正统的谷歌。搜索出的都是些垃圾,怎么也解决不了我的问题。后来加了一个QQ群,从里面得到消息去关注个微信公众号,终于人家给了我答案——像这种国内难以访问的,有时会有国内的相关网站,而QT的国内网站就是QTCN。
终于下载下来了。我之前把VS2017换成了VS2019,我想这个2019的也能给QT提供编译器支持吧。可是不行。
于是我把QT又删除了,打算直接装MinGW64,看到十几个G的大小我他妈。早知道不删除QT了,直接把VS2019换成VS2017就行了~
我他妈傻逼。
在有VS2017的情况下,下载安装完QT后,打开QTCreator。
但是此时仍然是不能运行的,需要进行配置——构建套件
工具 → \rightarrow → 选项 → \rightarrow → Kits
配置成下面这样,只要没有红色警告就行了
新建一个工程Qt Widget Application,有以下的文件结构,
要熟悉的.ui文件就是这个mainwindow.ui
双击这个文件会打开这样一个编辑窗口,
此时左边框显示在设计状态
怎么说呢?这个熟悉当然是自己随便乱搞一通啦(一位懒惰的刀塔客如是说)
.pro是项目的管理文件,不用自己编辑。
如果你创建的是XXX项目,那么头文件XXX.h里就有一个XXX类,这类里包含一个同名的ui 命名空间下的组合类,在利用 XXX 类操控 UI 时,实际上在操控另一个被封装的类。
大概是下面这样的结构:
//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 = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
//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;
}
//main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
//ui_mainwindow.h
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.12.2
**
** 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/QMainWindow>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QWidget *centralWidget;
QMenuBar *menuBar;
QMenu *menuMyWin;
QToolBar *mainToolBar;
QStatusBar *statusBar;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(400, 300);
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
MainWindow->setCentralWidget(centralWidget);
menuBar = new QMenuBar(MainWindow);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 400, 23));
menuMyWin = new QMenu(menuBar);
menuMyWin->setObjectName(QString::fromUtf8("menuMyWin"));
MainWindow->setMenuBar(menuBar);
mainToolBar = new QToolBar(MainWindow);
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
statusBar = new QStatusBar(MainWindow);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
MainWindow->setStatusBar(statusBar);
menuBar->addAction(menuMyWin->menuAction());
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", nullptr));
menuMyWin->setTitle(QApplication::translate("MainWindow", "MyWin", nullptr));
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H
这样的好处就是可以通过同一个类控制Ui_XXX和XXX,让人感觉不到Ui_XXX这个UI编辑类的存在。
更多推荐


所有评论(0)