我开发一个应用程序,该应用程序里面,我需要当值变为产生的信号。为此,我更新了班级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