如何访问Qt MainWindow成员



在我的项目中,我想调用mainwindow.h中生成的变量QImage image,在其他类文件中,例如,称为SegSetupDialog.h。这里image是通过点击mainwindow.ui中的按钮加载的,SegSetupDialog是一个QDialog,通过点击mainwindow.ui中的一个按钮弹出。

我尝试使用信号槽连接将mainwindow qimage发送到SegSetupDialog,如下所示。

对于类主窗口:

SegSetupDialog *segsetup;
if(image.isNull()==false)
  {
        emit sendImgData(image);
        qDebug()<<"sendImgData emitted!";
        if(segsetup==NULL) segsetup = new SegSetupDialog();
        connect(this, SIGNAL(sendImgData(QImage)),segsetup,SLOT(getImgData(QImage)),Qt::QueuedConnection);
   }

In SegSetupDialog::getImgData

void SegSetupDialog::getImgData(QImage qimage)
{
    qImg = qimage;
    qDebug()<<"qimage received!";
}

上面的连接似乎不起作用,因为getImgData中的qDebug消息没有打印出来。任何人都可以帮助检查代码的错误,或建议其他方法来访问mainwindow image?谢谢!!

您需要在发出信号之前进行信号/插槽连接。连接只完成一次,通常在构造函数中完成。

但是,您可能应该在 SegSetupDialog 的构造函数中执行connect(),而不是MainWindow构造函数。SegSetupDialog希望收到有关图像数据更新的通知,因此您应该在那里建立连接。

此外,为了确保正确指定信号和插槽,请勿在调用中使用Qt 4 connect()。使用在编译时检查的Qt 5:

connect(this, &MainWindow::sendImgData,
        segsetup, &SegSetupDialog::getImgData, Qt::QueuedConnection);

(当然,如果你把它移到SegSetupDialog构造函数中,请适当地改变它。

最新更新