在我的项目中,我想调用QImage image
中其他类文件(例如称为mainwindow.h
)中生成的变量SegSetupDialog.h
。在这里,通过单击image
中的一个按钮来加载mainwindow.ui
,而SegSetupDialog
是QDialog
,通过单击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
?谢谢!
答案 0 :(得分:1)
在发出信号之前,您需要进行信号/插槽连接。连接通常在构造函数中完成一次。
但是,您可能应该在connect()
的构造函数中执行SegSetupDialog
,而不是MainWindow
。 SegSetupDialog
希望收到有关图像数据更新的通知,因此您应该在那里建立连接。
此外,要确保正确指定信号和插槽,请不要使用Qt 4 connect()
调用。使用在编译时检查的Qt 5:
connect(this, &MainWindow::sendImgData,
segsetup, &SegSetupDialog::getImgData, Qt::QueuedConnection);
(当然,如果将其移至SegSetupDialog构造函数,则可以对其进行适当的更改。)