我開發一個應用程序,該應用程序裏面,我需要當值變爲產生的信號。爲此,我更新了班級MyDevice,以在值數據更改時添加CumulChanged插槽。
MyDevice.cpp
void MyDevice::IncreaseSize(uint64_t size) {
Device->cumulsizeoperation += size;
emit CumulChanged();
}
void MyDevice::CumulChanged(){
qDebug() << "test";
}
我進入了INCREASESIZE和CumulChanged被髮射。
我用我的UI鑑於此信號來獲取信息,更新進度條。
我在UI.cpp
connect(this, SIGNAL(MyDevice::CumulChanged()),
this, SLOT(onUpdateProgress()));
所做的和onUpdateProgress定義也是在UI類
void UI::onUpdateProgress(){
Box->ProgressUpdate();
}
我的UI類的定義如下:
UI.cpp
UI::UI(DeviceMngr& device) :
m_device(device)
和UI.h
class UI : public QTreeWidget
{
Q_OBJECT
public:
UI(DeviceMngr& device);
~ UI();
private:
DeviceMngr& m_device;
}
任何想法爲什麼onUpdateProgress沒有觸發?
感謝
'connect'的第一個參數應該指向有信號的類,在你的情況下,它應該是一個'MyDevice'類型的指針而不是'UI'。另外'MyDevice ::'可能不被允許,當然也不需要,所以你最好刪除它。 – Predelnik 2015-03-31 20:51:23
你的信號有代碼。它不應該。你的連接語法看起來很奇怪,要麼使用舊的或新的(qt5)語法。看起來你一般沒有得到信號和插槽。 – dtech 2015-03-31 21:43:12
@ddriver。我看不出有什麼奇怪的。我總是使用這樣的連接,但它只在相同的類。這是第一次,我希望的信號從其它類 – Seb 2015-03-31 22:08:47