当前位置: 首页> 文旅> 旅游 > QT_Log

QT_Log

时间:2025/7/11 0:10:00来源:https://blog.csdn.net/Chroniccandy/article/details/140630061 浏览次数:0次

通过槽函数connect传参


您遇到的错误是因为您将一个普通变量 g_lLoginHandle 误用为信号。在 Qt 中,信号必须是定义在类中并使用 signals: 关键字声明的函数。

更正方法:

  1. 定义一个信号: 在您的 MainWindow 类中,添加一个信号来发射 g_lLoginHandle 的值:

    class MainWindow : public QMainWindow {Q_OBJECT
    signals:void loginHandleChanged(LLONG loginHandle); // 信号声明
    // ...
    }; 
    
  2. 发射信号: 当您需要将 g_lLoginHandle 的值传递给 TRD_SmartTHM 线程时,发射 loginHandleChanged 信号:

    void MainWindow::someFunction() {// ...emit loginHandleChanged(g_lLoginHandle); // ...
    }
    
  3. 连接信号和槽: 现在可以正确连接信号和槽:

    connect(this, &MainWindow::loginHandleChanged, TRDSTHM, &TRD_SmartTHM::recvHandle);
    

完整的示例:

#include <QObject>
#include <QThread>class TRD_SmartTHM : public QThread {Q_OBJECT
public slots:void recvHandle(LLONG handle) {// ... 处理接收到的 handle ...}
};class MainWindow : public QMainWindow {Q_OBJECT
signals:void loginHandleChanged(LLONG loginHandle); public:// ...MainWindow() {// ...// 创建 TRD_SmartTHM 线程TRD_SmartTHM* thread = new TRD_SmartTHM();thread->start();// 连接信号和槽connect(this, &MainWindow::loginHandleChanged, thread, &TRD_SmartTHM::recvHandle);}// ... 
};

关键点:

  • 确保 TRDSTHMTRD_SmartTHM 类的实例,并且 TRD_SmartTHM 中的 recvHandle 槽函数定义正确,接收 LLONG 参数。
  • Qt 的信号-槽机制是安全可靠地在不同对象和线程之间进行通信的强大方式。

通过这些修改,您的代码应该可以正常工作,您应该能够将 g_lLoginHandle 的值传递给 TRD_SmartTHM 线程。

如果您还有其他问题,请随时问我。

关键字:QT_Log

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: