目的:把对话框中的数据传递到主窗口;
解决方案:信号与槽;
实现效果:弹出对话框
流程:
①在项目中添加新的对话框类newDialog;
②在newDialog中定义信号send(int a);
③在主窗口中创建newDialog的对象,连接槽函数。
具体代码(5.9.7):
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <newdialog.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
void received(int);
};
#endif // MAINWINDOW_H
newdialog.h
#ifndef NEWDIALOG_H
#define NEWDIALOG_H
#include <QDialog>
namespace Ui {
class newDialog;
}
class newDialog : public QDialog
{
Q_OBJECT
public:
explicit newDialog(QWidget *parent = nullptr);
~newDialog();
private slots:
void on_pushButton_clicked();
private:
Ui::newDialog *ui;
signals:
void send (int a);
};
#endif // NEWDIALOG_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
newDialog *dialog=new newDialog(this);
dialog->setWindowTitle("Hello");
dialog->show();
connect(dialog,&newDialog::send,this,&MainWindow::received);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::received(int a)
{
qDebug()<<"a:"<<a;
}
newdialog.cpp
#include "newdialog.h"
#include "ui_newdialog.h"
newDialog::newDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::newDialog)
{
ui->setupUi(this);
setWindowModality(Qt::ApplicationModal);
}
newDialog::~newDialog()
{
delete ui;
}
void newDialog::on_pushButton_clicked()
{
emit send(333);
accept();
}
ui文件只有newdialog中有一个按钮。