一、基本介紹
QDialogButtonBox 是 Qt 提供的一個標準對話框按鈕盒類,用於在對話框中顯示一個或多個標準按鈕,例如 OK、Cancel、Yes 和 No 等等。通過調用 QDialogButtonBox 的 addButton() 函數,我們可以添加按鈕並設置按鈕的屬性。QDialogButtonBox 可以自動調整按鈕大小並根據按鈕數量和布局方向展示特定風格的按鈕。同時,QDialogButtonBox 可以檢測平台的樣式,並調整自己的外觀,以便更好地適應運行的操作系統。
// 示例代碼
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
buttonBox->setCenterButtons(true);
connect(buttonBox, &QDialogButtonBox::accepted, this, &MyDialog::accept);
connect(buttonBox, &QDialogButtonBox::rejected, this, &MyDialog::reject);
二、屬性設置
QDialogButtonBox 有一些很有用的屬性設置函數
- setStandardButtons():設置該 QDialogButtonBox 放置哪些標準按鈕。可選的標準按鈕由 QDialogButtonBox::StandardButton 枚舉類定義。
- addButton():添加一個新的按鈕,可以指定顯示文本、按鈕類型和快捷鍵。
- setCenterButtons():如果設置為 true,則所有按鈕將在對話框區域的中心繪製。
- button():按照按鈕類型返回 QDialogButtonBox 中包含的按鈕,例如 Ok 按鈕和 Cancel 按鈕等等。
- buttons():按照迭代器返回包含在按鈕盒中的 QAction 按鈕。
QDialogButtonBox *buttonBox = new QDialogButtonBox();
QPushButton *okButton = new QPushButton (QDialogButtonBox::Ok);
QPushButton *cancelButton = new QPushButton (QDialogButtonBox::Cancel);
QPushButton *saveButton = new QPushButton(tr("Save"));
buttonBox->addButton(okButton,QDialogButtonBox::AcceptRole);
buttonBox->addButton(cancelButton,QDialogButtonBox::RejectRole);
buttonBox->addButton(saveButton,QDialogButtonBox::ActionRole);
buttonBox->setCenterButtons(true);
三、信號槽連接
QDialogButtonBox 的 accept()、done() 和 reject() 信號可用於與 QPushButton 的 clicked() 信號相關聯。我們可以根據特定按鈕的單擊事件執行特定操作。
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
四、風格設置
QDialogButtonBox 受Qt GUI管理器的影響,它具有與系統的外觀和感覺一致的默認表現。但是,我們可以使用setStyleSheet()函數自定義按鈕的樣式,從而改變對話框的外觀。
buttonBox->setStyleSheet("QPushButton {"
"color: white;"
"font-weight: bold;"
"border: 1px solid grey;"
"border-radius: 3px;"
"background-color: rgb(54, 54, 54);"
"}"
"QDialogButtonBox {"
"background-color: rgb(105, 105, 105);"
"}");
五、自定義按鈕操作
既然我們可以添加按鈕並控制其屬性和行為,我們也可以自定義特定按鈕的操作。
QPushButton* okButton = buttonBox->button(QDialogButtonBox::Ok);
QPushButton* cancelButton = buttonBox->button(QDialogButtonBox::Cancel);
connect(okButton, &QPushButton::clicked, this, &MyDialog::okButtonClicked);
connect(cancelButton, &QPushButton::clicked, this, &MyDialog::cancelButtonClicked);
六、總結
QDialogButtonBox 是 Qt 提供的一個標準對話框按鈕盒類,可以用於在對話框中顯示一個或多個標準按鈕。操作簡單,且可給按鈕盒和按鈕添加自定義操作。同時,QDialogButtonBox 也可以自動調整大小和檢測系統樣式,以便更好地適應不同的操作系統。
原創文章,作者:RZOTD,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/370252.html