QDialog::accept() / reject()

最も一般的な方法。

// MyDialog.h
class MyDialog : public QDialog {
    Q_OBJECT
public:
    explicit MyDialog(QWidget *parent = nullptr);

    QString resultText() const { return m_result; }

private slots:
    void onOkClicked();

private:
    QString m_result;
};
// MyDialog.cpp
MyDialog::MyDialog(QWidget *parent)
    : QDialog(parent)
{
    auto *edit = new QLineEdit(this);
    auto *button = new QPushButton("OK", this);

    connect(button, &QPushButton::clicked, this, &MyDialog::onOkClicked);
}

void MyDialog::onOkClicked()
{
    m_result = "ユーザーが入力した値";  // 何でも保存できる
    accept(); // ← ダイアログを閉じて OK を返す
}

呼び出し側

MyDialog dlg;
if (dlg.exec() == QDialog::Accepted) {
    QString value = dlg.resultText();
    ...
}