1. 创建第一个Qt工业组态项目
任务目标
创建一个可运行的Qt Widgets应用程序项目,搭建工业组态软件的基础窗口框架:包含主窗口、菜单栏、工具栏、状态栏以及一个可扩展的中央画布区域,为后续添加工业图形元件与交互功能奠定工程结构基础。
环境依赖
- Qt 5.15+ 或 Qt 6.x(含Qt Widgets模块)
- 编译器:MSVC 2019+ / MinGW / GCC(任一支持C++17的编译器)
- 构建工具:qmake 或 CMake(本案例使用qmake)
工程结构
IndustrialHMI/
├── IndustrialHMI.pro
├── main.cpp
├── mainwindow.h
├── mainwindow.cpp
└── mainwindow.ui(可选,本案例纯代码实现)
完整实现代码
IndustrialHMI.pro
QT += core gui widgets
TARGET = IndustrialHMI
TEMPLATE = app
CONFIG += c++17
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class QAction;
class QLabel;
class QMdiArea;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
private slots:
void newProject();
void openProject();
void saveProject();
void about();
private:
void createActions();
void createMenus();
void createToolBars();
void createStatusBar();
void createCentralArea();
QMdiArea *mdiArea;
QLabel *statusLabel;
QAction *newAct;
QAction *openAct;
QAction *saveAct;
QAction *exitAct;
QAction *aboutAct;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QStatusBar>
#include <QLabel>
#include <QMdiArea>
#include <QMdiSubWindow>
#include <QTextEdit>
#include <QMessageBox>
#include <QApplication>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), mdiArea(nullptr), statusLabel(nullptr)
{
setWindowTitle("工业组态设计器 - 未命名项目");
resize(1280, 800);
createCentralArea();
createActions();
createMenus();
createToolBars();
createStatusBar();
statusLabel->setText("就绪");
}
void MainWindow::createCentralArea()
{
mdiArea = new QMdiArea(this);
mdiArea->setBackground(Qt::darkGray);
setCentralWidget(mdiArea);
}
void MainWindow::createActions()
{
newAct = new QAction("新建项目", this);
newAct->setShortcut(QKeySequence::New);
connect(newAct, &QAction::triggered, this, &MainWindow::newProject);
openAct = new QAction("打开项目", this);
openAct->setShortcut(QKeySequence::Open);
connect(openAct, &QAction::triggered, this, &MainWindow::openProject);
saveAct = new QAction("保存项目", this);
saveAct->setShortcut(QKeySequence::Save);
connect(saveAct, &QAction::triggered, this, &MainWindow::saveProject);
exitAct = new QAction("退出", this);
exitAct->setShortcut(QKeySequence::Quit);
connect(exitAct, &QAction::triggered, this, &QWidget::close);
aboutAct = new QAction("关于", this);
connect(aboutAct, &QAction::triggered, this, &MainWindow::about);
}
void MainWindow::createMenus()
{
QMenu *fileMenu = menuBar()->addMenu("文件(&F)");
fileMenu->addAction(newAct);
fileMenu->addAction(openAct);
fileMenu->addAction(saveAct);
fileMenu->addSeparator();
fileMenu->addAction(exitAct);
QMenu *helpMenu = menuBar()->addMenu("帮助(&H)");
helpMenu->addAction(aboutAct);
}
void MainWindow::createToolBars()
{
QToolBar *fileToolBar = addToolBar("文件");
fileToolBar->addAction(newAct);
fileToolBar->addAction(openAct);
fileToolBar->addAction(saveAct);
}
void MainWindow::createStatusBar()
{
statusLabel = new QLabel(this);
statusBar()->addWidget(statusLabel);
statusBar()->showMessage("就绪", 3000);
}
void MainWindow::newProject()
{
QMdiSubWindow *subWindow = new QMdiSubWindow;
QTextEdit *editor = new QTextEdit;
editor->setPlainText("// 新的组态画布\n// 在此添加工业图形元件");
subWindow->setWidget(editor);
subWindow->setWindowTitle("组态画面1");
mdiArea->addSubWindow(subWindow);
subWindow->show();
statusLabel->setText("已创建新组态画面");
}
void MainWindow::openProject()
{
statusLabel->setText("打开项目:功能预留(后续接入文件对话框)");
}
void MainWindow::saveProject()
{
statusLabel->setText("保存项目:功能预留(后续接入文件写入)");
}
void MainWindow::about()
{
QMessageBox::about(this, "关于", "Qt工业组态开发实战\n案例1:创建第一个Qt工业组态项目");
}
main.cpp
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
}
运行与验证
构建与运行:
cd IndustrialHMI
qmake
make # Windows下使用 mingw32-make 或 nmake
./IndustrialHMI # Windows下运行 IndustrialHMI.exe
验证步骤与通过条件:
- 程序启动后显示主窗口,标题为“工业组态设计器 - 未命名项目”,窗口大小约1280×800。
- 菜单栏包含“文件”和“帮助”两个菜单;工具栏包含新建、打开、保存三个按钮;状态栏显示“就绪”文字。
- 点击“文件→新建项目”或工具栏“新建项目”按钮,中央区域出现一个子窗口,标题为“组态画面1”,内部包含文本“// 新的组态画布”。
- 点击“帮助→关于”弹出关于对话框,点击“退出”或关闭窗口可正常结束程序。
- 状态栏在每次操作后显示对应的提示文字(如“已创建新组态画面”)。
以上条件全部满足,即表示第一个Qt工业组态项目框架创建成功,可作为后续添加工业图形元件、属性编辑、工程文件读写等功能的基础工程。