Qt中自定義QDialog隱藏視窗的關閉按鈕

2021-08-15 14:33:44 字數 1054 閱讀 7796

今天在設計乙個自定義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)

效果如圖

3. 高階

如果想要允許使用者自由改變自定義視窗的關閉按鈕顯示特性,只需要對建構函式介面稍加修改即可,如下

reminddialog::reminddialog(qwidget *parent, qt::windowflags f) :

qdialog(parent,f),

ui(new ui::reminddialog)

Qt 自定義事件

最近做的專案,是用qt的完成的,在用到事件派發的時候,要用自己自定義的事件型別來滿足需要。具體就是按照qt的官方文件說明,做了乙個簡單的例子,以免忘記,就先寫下來儲存。首先有個customevent 類,繼承自qevent ifndef customevent h define customeven...

Qt 自定義事件

關於qt的自定義事件也是看了幾個大牛的部落格。總結下心得,如有錯誤請指出。一起成長。先給原始碼。也是第一次原創啊,不知道怎麼寫,呵呵。include include class mywidget public qwidget static const int mycustomeventtype 10...

QT 自定義委託

qt 中引入了經典的mvc結構,即模型 檢視 控制分離的結構,不過qt中只有mv沒有c,模型主要獲取資料,檢視主要複製模型的顯示,而委託只要是設定顯示的風格,在某一行某一列使用的不同的部件進行顯示,我在qt的qspinbox的歷程上加上了一點。通常委託都繼承qstyleditemdelegate和q...