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;
相关推荐
yongche_shi7 小时前
ragas官方文档中文版(五十)
开发语言·python·ai·ragas·如何评估和改进 rag 应用
一路向北he7 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
QiLinkOS7 小时前
第三视觉理解徐玉生与他的商业活动(30)
大数据·c++·人工智能·算法·开源协议
mit6.8247 小时前
阅读的核心,是再读
c++
AI行业学习8 小时前
Notepad++ 官方下载 + 完整安装 + 全套优化配置(2026最新)
开发语言·人工智能·python·前端框架·html·notepad++
大圣编程9 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
upgrador9 小时前
基础知识:C++ STL构造函数的左闭右开惯例及其实现原理
开发语言·c++
yoothey10 小时前
报废审批流规则引擎设计——责任链模式完整实现
linux·开发语言·bash
尘中远10 小时前
【Qwt 7.0 系列】坐标轴与刻度系统 —— 刻度引擎、网格、图例与刻度朝内
qt·数据可视化·qcustomplot·qwt·工业软件·科学绘图
geovindu10 小时前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式