为什么用QT就不赘述了,优点主要是高性能,跨平台。缺点就是基于C++语言开发成本高,效率低。
下面我们就从创建一个qt桌面应用开始
环境:Qt6
1.打开qt creator界面如下
选择桌面应用
选择创建文件夹
选择编译系统
选择语言
生成的工程如下
可以看到这里的文件
头文件
mainwindow.h
源文件
main.cpp
mainwindow.cpp
ui
mainwindow.ui
本地化文件
qt-demo_zh_CN.ts
mainwindow.h 文件中主要定义了MainWindow 的构造函数还有析构函数
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp 中就是mainwindow.h的实现
#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 是main函数入口了,这里是创建了QApplication对象,显示了MainWindow
#include "mainwindow.h"
#include <QApplication>
#include <QLocale>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();
for (const QString &locale : uiLanguages) {
const QString baseName = "qt-demo_" + QLocale(locale).name();
if (translator.load(":/i18n/" + baseName)) {
a.installTranslator(&translator);
break;
}
}
MainWindow w;
w.show();
return a.exec();
}
mainwindow.ui 就是主窗口的布局文件了
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>24</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
ui文件在qt creator中是一个只读文件,界面设计需要在qt的设计器中
运行程序,出现这个界面
这样,一个初始化的QT工程就创建成功了。