Here is an elementary example of such a dialog: Create a dialog, set line values to it in lineEdit. When you click the Apply button, the lines from the dialog are saved to the variables of the main form.
mydialog.h
#pragma once #include <QDialog> namespace Ui { class MyDialog; } class MyDialog : public QDialog { Q_OBJECT public: explicit MyDialog(QWidget *parent = 0); ~MyDialog(); void setEdit1Text(const QString &_text); void setEdit2Text(const QString &_text); QString lineEdit1Text() const; QString lineEdit2Text() const; private slots: void on_applyButton_clicked(); private: Ui::MyDialog *ui; };
mydialog.cpp
#include "mydialog.h" #include "ui_mydialog.h" MyDialog::MyDialog(QWidget *parent) : QDialog(parent), ui(new Ui::MyDialog) { ui->setupUi(this); } MyDialog::~MyDialog() { delete ui; } void MyDialog::setEdit1Text(const QString &_text) { ui->lineEdit1->setText(_text); } void MyDialog::setEdit2Text(const QString &_text) { ui->lineEdit2->setText(_text); } QString MyDialog::lineEdit1Text() const { return ui->lineEdit1->text(); } QString MyDialog::lineEdit2Text() const { return ui->lineEdit2->text(); } void MyDialog::on_applyButton_clicked() { accept(); }
mainwindow.h
#pragma once #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_pushButton_clicked(); private: Ui::MainWindow *ui; QString m_line1, m_line2; };
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include "mydialog.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { MyDialog dialog; dialog.setEdit1Text(m_line1); dialog.setEdit2Text(m_line2); if(dialog.exec() == QDialog::Accepted) { m_line1 = dialog.lineEdit1Text(); m_line2 = dialog.lineEdit2Text(); } }