Qt工程中默认所有的代码都写在mainwindow.cpp里,当代码量不多时尚可,但一旦代码量多,就会使mainwindow.cpp非常臃肿,给开发和阅读造成不便,因此考虑将部分代码剥离出来,放到另外的cpp文件里。这里就会涉及到在另外的cpp里如何使用mainwindow中的控件的问题。经过摸索,找到了一种简单且有效的办法。
1.在工程目录下创建.cpp和.h文件,这里以user.cpp举例
user.cpp的源码:
#include "user.h"
Ui::MainWindow *ui = nullptr;
/*********************************************************************
* 函数功能:界面初始化
* 参 数: 无
* 返回值: 无
* 备 注: 无
*********************************************************************/
void ui_init(Ui::MainWindow *ui_ptr)
{
ui = ui_ptr;
}
user.h的源码:
#ifndef __USER_H__
#define __USER_H__
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QFileInfo>
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QTime>
#include <QTimer>
#include <QProcess>
#include <QDir>
/*********************************************************************
* 函数功能:界面初始化
* 参 数: 无
* 返回值: 无
* 备 注: 无
*********************************************************************/
void ui_init(Ui::MainWindow *ui_ptr);
#endif
2.打开*.pro工程文件,将user.cpp和user.h添加到工程中
3.在MainWindow的构造函数中,将ui指针的值通过ui_init()函数,传递给user.cpp中的ui这个全局变量。
4.至此,就可以在user.cpp中使用ui及其所有的控件了,和mainwindow.cpp没有区别。