通过使用Qt的信号与槽机制实现这个功能。以下是一个简单的实例演示如何使用信号与槽在两个界面之间传递图像:
- 首先,在主窗口类中定义一个信号,用于在预测图像后发射图像数据。例如,如果您的主窗口类名为
MainWindow:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
signals:
void imagePredicted(const QImage &image);
private slots:
void on_predictButton_clicked(); // 预测图像并发射信号
private:
Ui::MainWindow *ui;
};
- 在
on_predictButton_clicked槽函数中,您可以进行图像预测,并发射imagePredicted信号,将预测的图像传递给其他界面:
void MainWindow::on_predictButton_clicked()
{
// 进行图像预测
QImage predictedImage = ...;
// 发射信号,传递预测的图像
emit imagePredicted(predictedImage);
}
- 在接收图像的界面类中,定义一个槽函数,用于接收和显示图像。例如,如果您的接收图像的界面类名为
DisplayWindow:
class DisplayWindow : public QWidget
{
Q_OBJECT
public:
explicit DisplayWindow(QWidget *parent = nullptr);
~DisplayWindow();
public slots:
void onImagePredicted(const QImage &image); // 接收并显示图像
private:
QLabel *imageLabel; // 用于显示图像的标签
};
- 在
DisplayWindow的构造函数中初始化imageLabel:
DisplayWindow::DisplayWindow(QWidget *parent) :
QWidget(parent)
{
imageLabel = new QLabel(this);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(imageLabel);
}
- 在
onImagePredicted槽函数中,接收并显示图像:
void DisplayWindow::onImagePredicted(const QImage &image)
{
imageLabel->setPixmap(QPixmap::fromImage(image));
}
- 最后,需要将
MainWindow的imagePredicted信号连接到DisplayWindow的onImagePredicted槽函数:
MainWindow *mainWindow = new MainWindow();
DisplayWindow *displayWindow = new DisplayWindow();
connect(mainWindow, &MainWindow::imagePredicted, displayWindow, &DisplayWindow::onImagePredicted);
这样,当您在MainWindow界面上进行图像预测时,预测出的图像将通过信号与槽传递给DisplayWindow界面并显示出来。
注意:上述代码仅为示例,您可能需要根据您的实际项目和需求进行调整。