如何访问Qt MainWindow成员

时间:2019-04-25 19:41:10

标签: qt

在我的项目中,我想调用QImage image中其他类文件(例如称为mainwindow.h)中生成的变量SegSetupDialog.h。在这里,通过单击image中的一个按钮来加载mainwindow.ui,而SegSetupDialogQDialog,通过单击mainwindow.ui中的一个按钮会弹出。 / p>

我尝试使用信号插槽连接将qimage的{​​{1}}发送到mainwindow,如下所示。

对于MainWindow类:

SegSetupDialog

在SegSetupDialog :: getImgData

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);
   }

由于void SegSetupDialog::getImgData(QImage qimage) { qImg = qimage; qDebug()<<"qimage received!"; } 中的qDebug消息未打印出来,因此上述连接似乎不起作用。任何人都可以帮助检查代码是否有问题,或者建议其他方法来访问getImgData中的image?谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

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

(当然,如果将其移至SegSetupDialog构造函数,则可以对其进行适当的更改。)