Qt中自定義QDialog隱藏視窗的關閉按鈕
阿新 • • 發佈:2019-02-15
今天在設計一個自定義Dialog的時候想要隱藏視窗的關閉按鈕,查了好久才找到解決的辦法
1. 這是一種比較極端的方法,直接建立一個無邊框的對話方塊,無邊框,自然什麼也沒了
QDialog dlg(this);
//建立一個無邊框的對話方塊
dlg.setWindowFlags(windowFlags()|Qt::FramelessWindowHint);
dlg.exec();
效果如圖2. 保留標題,取消關閉按鈕
- 原理解釋:自定義Dialog的視窗Flag是在父類QDialog的建構函式中進行初始化的,所以想要去掉按鈕可以通過向其父類建構函式傳參進行限定,但是如何完成這樣的操作呢?記不記得自定義Dialog時候的建構函式,在自定義視窗的建構函式中有的引數`QWidget *parent`,實際上是傳給`QDialog`建構函式的,因此此時可以進行傳參,下面給出的是我自定義的一個視窗的建構函式
效果如圖RemindDialog::RemindDialog(QWidget *parent) : QDialog(parent,Qt::WindowTitleHint | Qt::CustomizeWindowHint), ui(new Ui::RemindDialog) { ui->setupUi(this); }
3. 進階
如果想要允許使用者自由改變自定義視窗的關閉按鈕顯示特性,只需要對建構函式介面稍加修改即可,如下
RemindDialog::RemindDialog(QWidget *parent, Qt::WindowFlags f) :
QDialog(parent,f),
ui(new Ui::RemindDialog)
注: 轉載請註明出處