当前位置: 首页 > article >正文

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

目录

1.实例化

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

2. 通过信号与槽

2.1 例子

2.2 示例1

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.ui 和 3.ui 中能够访问 2.cpp 中的变量,同时 2.cpp 可以调用 1.cpp 和 3.cpp 中的槽函数。

一问:

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

一答:

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

  1. 成员初始化列表:

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

2.2 示例1

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

#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

#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

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

#include "widget/widtop.h"   
//  置顶界面    
WidTop * m_widTop = NULL;


http://www.kler.cn/a/545789.html

相关文章:

  • 【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞
  • @Transational事务注解底层原理以及什么场景事务会失效
  • C++设计模式-工厂模式
  • 什么是服务的雪崩、熔断、降级的解释以及Hystrix和Sentinel服务熔断器的解释、比较
  • OpenWebUI使用DeepSeek R1满血版,DeepSeek R1 API调用
  • 《C++ Primer》学习笔记(一)
  • 【目标检测json2xml】label从COCO格式json文件转VOC格式xml文件
  • 关于post和get的请求参数问题
  • Vue 3 30天精进之旅:Day 22 - 构建和部署
  • windows 打开22端口
  • DeepSeek自然语言处理(NLP)基础与实践
  • dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型
  • 真正通俗易懂的Langchain入门学习(二)
  • Kotlin 扩展函数与内联函数
  • DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件
  • 微信小程序组件间通信与传值的全面解析
  • 【Kubernetes】常用命令全解析:从入门到实战(中)
  • FastAPI 高并发与性能优化
  • CSS实现中心放大动画
  • 【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库