Qt中2个.app源文件之间函数与变量的互相调用

目录

1.实例化

[1.1 提升为某个类的自定义控件](#1.1 提升为某个类的自定义控件)

[2. 通过信号与槽](#2. 通过信号与槽)

[2.1 例子](#2.1 例子)

[2.2 示例1](#2.2 示例1)

[2.3 一个在widtop.h中定义的可以在widget.cpp中使用的全局变量](#2.3 一个在widtop.h中定义的可以在widget.cpp中使用的全局变量)


1.实例化

复制代码
// 在widget.cpp中实例化formconnect.cpp中的类
// 调试页面
 m_formConnect = new FormDebug();
复制代码
 connect(m_formConnect, SIGNAL(signalShowAppendNet(int, QString, int, bool)), m_formDebug, SLOT(slotShowAppend(int, QString, int, bool)));
复制代码
signalShowAppendNet是formconnect.h中的信号,slotShowAppend是formconnect.cpp中的函数

ui->widgetLocker 是一个指向某个 UI 控件(可能是 widgetLocker 这个控件对象)的指针,表示当前界面上的一个组件

1.1 提升为某个类的自定义控件

QT中提升为自定义控件的方法_qt 提升为-CSDN博客

Qt自定义控件集成到QtCreator中使用(方式一)。如何在QtCreator中使用自定义控件?注意方式一与方式二的差别。_哔哩哔哩_bilibili

提升后就可以在widget.cpp中直接访问另一个widgetLocker.cpp中的一些槽函数

2. 通过信号与槽

复制代码
    在widlocker.cpp发送emitwidlocker.h中的signalShowAppend信号,2.在widget.cpp中将该信号连接到formdebug.cpp中的槽函数

2.1 例子

要实现所描述的功能,需要创建一个简单的 Qt 应用程序,该程序将包含三个 .cpp 文件和三个对应的 .ui 文件。我们将确保在 1.ui3.ui 中能够访问 2.cpp 中的变量,同时 2.cpp 可以调用 1.cpp3.cpp 中的槽函数。

一问:

MainWindow2::MainWindow2(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow2), someVariable(0) { ui->setupUi(this); },这里的someVariable(0)表示什么意思

一答:

在 C++ 中,someVariable(0) 是一个成员初始化列表(member initializer list)的用法,它用于在构造函数的初始化阶段直接初始化类成员变量。在这个上下文中,someVariableMainWindow2 类的一个成员变量,它的类型可能是整数(int)或其他类型。在 MainWindow2 类中定义,通常用于存储与该窗口相关的某些数据。以下是具体的解释:

  1. 成员初始化列表:

    • 在构造函数的初始化列表中,someVariable(0) 的意思是将 someVariable 初始化为 0。这个初始化是在构造函数的主体执行之前完成的。
    • 使用初始化列表的好处包括:
      • 性能:直接初始化成员变量通常比在构造函数体内赋值更有效。
      • 支持常量和引用类型:中初如果成员变量是常量(const)或引用(&),则必须在初始化列表始化,因为它们不能在构造函数体中赋值。

2.2 示例1

cpp 复制代码
class Example {
public:
    Example(int value); // 构造函数声明
    int someVariable;   // 成员变量

private:
    int anotherVariable;
};

// 构造函数定义
Example::Example(int value) 
    : someVariable(value), // 用传入的 value 初始化 someVariable
      anotherVariable(0)   // 将 anotherVariable 初始化为 0
{
    // 这里可以有其他初始化代码
}

​

2.3 一个在widtop.h中定义的可以在widget.cpp中使用的全局变量

1.widtop.h

cpp 复制代码
#ifndef WIDTOP_H
#define WIDTOP_H

#include <QWidget>
#include "quiwidget.h"
#include "dlgmessage.h"

namespace Ui {
class WidTop;
}

class WidTop : public QWidget
{
    Q_OBJECT

public:
    explicit WidTop(QWidget *parent = 0);
    ~WidTop();

    //  按下次数
    int m_nPressTimes = 0;
    //  按下次数清零
    QTimer* m_timerTimesReset = NULL;

    //  设置在线状态显示
    void OnSetOnlineState(bool bOnline, QString strInfo, QString strStyle);

    //  在线信息
    QString m_strInfo = "";
    bool m_bOnline = false;
    static bool login_Flag; //here

signals:
    void signalAdminLogin();

    //  消息提示框
    void signalPopMsgDlg(DLG_MSG_INFO stDlgMsgInfo);

public slots:
    //  按下次数清零
    void slotTimesReset();

protected:
    void mouseReleaseEvent(QMouseEvent *ev);

private slots:
    void on_btnOlineState_clicked();

private:
    Ui::WidTop *ui;
};

#endif // WIDTOP_H

2.widtop.cpp

cpp 复制代码
#include "widtop.h"
#include "ui_widtop.h"
bool WidTop::login_Flag = true; //here
WidTop::WidTop(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::WidTop)
{

3.widget.cpp

cpp 复制代码
m_widTop = new WidTop();

//  管理员登录页面
void Widget::slotSwitchAdminLogin()
{
    //  切换tab页面
    //  设置登录页面用户名和密码
    ui->widAdminLogin->OnSetUserAndPwd(App::strUser, "");
    ui->tabWidget->setCurrentWidget(ui->widAdminLogin);
    //  设置超时
    ui->widAdminLogin->m_nCounrdown = 60;
    //  页面缩短
    QRect rectDownAll(420, 118, 612, 482);
    ui->tabWidget->setGeometry(rectDownAll);
    m_widTop->login_Flag = false;  //here
}

4.widget.h

cpp 复制代码
#include "widget/widtop.h"   
//  置顶界面    
WidTop * m_widTop = NULL;
相关推荐
Zevalin爱灰灰4 分钟前
编程技巧(基于STM32)第一章 定时器实现非阻塞式程序——按键控制LED灯闪烁模式
stm32·单片机·嵌入式硬件
paterWang1 小时前
基于 Python 和 OpenCV 的酒店客房入侵检测系统设计与实现
开发语言·python·opencv
东方佑1 小时前
使用Python和OpenCV实现图像像素压缩与解压
开发语言·python·opencv
红花与香菇2____1 小时前
【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(上)
笔记·嵌入式硬件·学习·pcb设计·cadence·pcb工艺
mit6.8242 小时前
[实现Rpc] 通信类抽象层 | function | using | 解耦合设计思想
c++·网络协议·rpc
我真不会起名字啊2 小时前
“深入浅出”系列之杂谈篇:(3)Qt5和Qt6该学哪个?
开发语言·qt
laimaxgg2 小时前
Qt常用控件之单选按钮QRadioButton
开发语言·c++·qt·ui·qt5
牵牛老人2 小时前
Qt中使用QPdfWriter类结合QPainter类绘制并输出PDF文件
数据库·qt·pdf
Jerry.yl2 小时前
关于 BK3633 上电时受串口 UART2 影响而无法启动的问题说明
嵌入式硬件·物联网·bk3633
水瓶丫头站住2 小时前
Qt的QStackedWidget样式设置
开发语言·qt