[QT] 如何優雅地去掉對話框的問號

QT 對話框的問號是什麼?

QDialog 默認的 window flag 中包含了 Qt::WindowContextHelpButtonHint,這個 flag 意思是在窗口上提供 "上下文幫助" 按鈕

 使用方式爲,調用

void QWidget::setWhatsThis(const QString &)

比如:

ui.lineEditName->setWhatsThis(u8"lineEdit 的上下文提示");

效果如下:

 

 

優雅地去掉對話框的問號

去掉該問號其實就是取消該 flag 即可,然而網上隨便一搜索便是各種不優雅的實現,比如 [這裏], 還有 [這裏],這些實現都重置了窗口的原有屬性,而這裏問題只是要純粹地取消 Qt::WindowContextHelpButtonHint 的屬性

這裏提供 3 個優雅的去除單個 window flag 的方式:

//方法一:獲取所有標誌位,使用 &(按位與) 和 ~(按位取反) 兩種位運算將標誌位置0
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
//方法二:獲取所有標誌位,使用 ^(按位抑或) 位運算將標誌位置0
setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint);
//方法三:直接設置單個標誌位,參數 on=false
setWindowFlag(Qt::WindowContextHelpButtonHint, false);

 

本文地址:https://www.cnblogs.com/BensonLaur/p/16906055.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章