2
如何從QDialog
返回自定義值?這是documented它分別返回QDialog返回值,僅接受還是拒絕?
QDialog::Accepted 1
QDialog::Rejected 0
如果用戶按Cancel
的Ok
。
我想在一個自定義對話框呈現,即三個複選框,以允許用戶選擇一些選項。 QDialog
適合這個嗎?
如何從QDialog
返回自定義值?這是documented它分別返回QDialog返回值,僅接受還是拒絕?
QDialog::Accepted 1
QDialog::Rejected 0
如果用戶按Cancel
的Ok
。
我想在一個自定義對話框呈現,即三個複選框,以允許用戶選擇一些選項。 QDialog
適合這個嗎?
你會在2個功能感興趣:
QDialog::setResult()
讓你使用任何整數作爲返回值(不關閉對話框):http://doc.qt.io/qt-5/qdialog.html#setResult。QDialog::done()
不相同,不同之處在於它關閉對話框,使QDialog::exec()
回報,你指定的結果:http://doc.qt.io/qt-5/qdialog.html#done通常,在QDialog的「確定」按鈕連接到QDialog::accept()
插槽。你想避免這種情況。相反,寫自己的處理程序設置返回值:
// Custom dialog's constructor
MyDialog::MyDialog(QWidget *parent = nullptr) : QDialog(parent)
{
// Initialize member variable widgets
m_okButton = new QPushButton("OK", this);
m_checkBox1 = new QCheckBox("Option 1", this);
m_checkBox2 = new QCheckBox("Option 2", this);
m_checkBox3 = new QCheckBox("Option 3", this);
// Connect your "OK" button to your custom signal handler
connect(m_okButton, &QPushButton::clicked, [=]
{
int result = 0;
if (m_checkBox1->isChecked()) {
// Update result
}
// Test other checkboxes and update the result accordingly
// ...
// The following line closes the dialog and sets its return value
this->done(result);
});
// ...
}
這將是很好基於問題三個複選框有一個例子... – KcFnMi
@KcFnMi完成,顯示出'了QDialog ::進行()' :) – JKSH
儘管這是可能的,但我通常只是通過getters讓複選框值可訪問,並在exec()返回Accepted時調用它們。這導致代碼更少,並且往往更具可讀性。 –