我有这个thread.h文件;
#ifndef THREAD_H
#define THREAD_H
#include <QtGui>
#include <QString>
#include <tray.h>
class svThread : public QThread {
public:
bool getIsPaused();
void checkSettings();
virtual void run();
void setPause(bool);
signals:
void mySignal(bool);
};
#endif // THREAD_H
我得到了一个托盘应用程序,名为tray:P,我在那里制作一个帖子;
svThread a;
我正在开始。
在tray.h中我也有一个插槽class Tray : public QWidget
{
Q_OBJECT
public:
Tray();
QMenu *trayIconMenu;
public slots:
void settings();
void pause();
void setPause(bool);
public:
void createActions();
void createTrayIcon();
QAction *settingAction;
QAction *quitAction;
QAction *pauseAction;
QSystemTrayIcon *trayIcon;
};
#endif
但是当我在tray.cpp文件中调用setPause();
的thread.cpp文件中使用setPause();
时,我怎么能这样做呢?
答案 0 :(得分:0)
您只需要像平常一样连接每对物体的信号和插槽。看一下非常好的主题Qt's documentation。基本上是:
connect(threadObj, SIGNAL(mySignal(bool)), trayObj, SLOT(setPause(bool)));
答案 1 :(得分:0)
试试Queued Connections。只提供连接Qt::QueuedConnection