Qt信号是发射器,但似乎没有触发信号

时间:2015-03-31 20:43:04

标签: c++ qt signals-slots

所有

我正在开发应用程序并在应用程序内部,我需要在值更改时生成信号。为此,我更新了我的类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?

由于

1 个答案:

答案 0 :(得分:1)

我假设你在MyDevice.h中有这样的东西:

signals:
    void CumulChanged();

然后删除:

void MyDevice::CumulChanged(){
    qDebug() << "test";
}

并在UI构造函数中添加以下行:

connect(&device, &MyDevice::CumulChanged, this, &UI::onUpdateProgress);