【发布时间】:2015-04-01 15:01:30
【问题描述】:
全部,
我正在开发一个应用程序,在应用程序内部,我需要在值更改时生成一个信号。为此,我更新了 MyDevice 类以在值数据更改时添加 CumulChanged 插槽。
我的设备.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::可能是不允许的,当然也不需要,所以你最好删除它。 -
您的信号中有代码。它不应该。您的连接语法看起来也很奇怪,使用旧的或新的 (qt5) 语法。看起来你没有得到正确的信号和槽。
-
@ddriver。我看不出有什么奇怪的。我总是像这样使用连接,但它只在同一个类中。这是第一次,我期待来自另一个班级的信号
-
@Predelink 谢谢我将删除“this”以避免调用同一类中的方法
标签: c++ qt signals-slots