QT在其他cpp文件中使用MainWindow的界面和控件的方法

        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没有区别。

猜你喜欢

转载自blog.csdn.net/fun_tion/article/details/114365282
今日推荐