繁体   English   中英

QT将来自不同类的信号和插槽连接到主窗口类?

[英]QT connect signal and slot in from different classes to mainwindow class?

我想在两个类mainwindowreader之间实现信号和插槽。

reader类中,我声明了信号SetProgress

阅读器.h

class reader :public QObject
    {
        Q_OBJECT    
         signals:
             void SetProgress(QString sOperation, int nPercentage);
}

阅读器.cpp

 void reader::UpdateProgress(double amount)
{
     int nPrecentage = (100 * amount / (max- min));
     emit SetProgress(m_sCurrentOperation, nPrecentage); 
}

主窗口.h

    public:
    reader *MyReader

private slots:

    void SlotDisplayProgress(QString sActivity_i, int ProgressPercentage_i);

主窗口.cpp

void mainwindow :: SlotDisplayProgress(QString sActivity_i, int nProgressPercentage_i)
{
     this->ui->QprogressBar->setValue(nProgressPercentage_i);
}

在 Mainwidow.cpp 中,我将声明信号和插槽

MyReader = reader::New();
connect ( MyReader, &reader::SetProgress, this, &mainwindow::SlotDisplayProgress );

我尝试调试,一切正常,直到emit部分。 但是, slot永远不会执行。

MyReader 是指针吗? 如果不是这样,请使用 &MyReader。

尝试设置 Qt::DirectConnection:

connect ( MyReader, &reader::SetProgress, this, &mainwindow::SlotDisplayProgress, ***Qt::DirectConnection***);

我遇到了这样的问题,我连接了信号和插槽,它只在我定义了连接类型时才起作用。

我希望这有帮助。


附注。 我不知道这是否取决于 QT 的版本,但是当我连接信号和插槽时,我编写的语法如下:

ImageURLLoadListener* downloader = new ImageURLLoadListener(&id, socket);
connect(downloader, SIGNAL(imageLoaded(QString*,QTcpSocket*)), this, SLOT(on_resourceImageDownload(QString*,QTcpSocket*)), Qt::DirectConnection);

不知道有没有关系...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM