窗口標(biāo)志示例展示了如何使用Qt中可用的窗口標(biāo)志類(lèi)型來(lái)指定窗口系統(tǒng)屬性。
demo
??根據(jù)示例整理出來(lái)的各窗口標(biāo)志作用一覽表如下:
- 只能設(shè)置一個(gè)的窗口標(biāo)志對(duì)照表
窗口標(biāo)志 | 描述 |
---|---|
Qt::QWidget | 窗口的默認(rèn)屬性 |
Qt::Window | 帶有窗口系統(tǒng)框架和標(biāo)題欄 |
Qt::Dialog | 對(duì)話框(通常標(biāo)題欄中沒(méi)有最大化或最小化按鈕) |
Qt::Sheet | macOS表單式窗口 |
Qt::Drawer | macOS抽屜式窗口 |
Qt::Popup | 彈出式頂層窗口 |
Qt::Tool | 顯示工具按鈕的窗口 |
Qt::Tooltip | 沒(méi)有標(biāo)題欄和窗口邊框的窗口 |
Qt::SplashScreen | 啟動(dòng)窗口類(lèi)似于QSplashScreen
|
- 可以設(shè)置多個(gè)的窗口標(biāo)志對(duì)照表
窗口標(biāo)志 | 描述 |
---|---|
Qt::MSWindowsFixedSizeDialogHint | Windows系統(tǒng)固定大小窄邊框窗口 |
Qt::X11BypassWindowManagerHint | 無(wú)窗口邊框的窗口涩咖,完全忽視窗口管理器和用戶無(wú)法使用鍵盤(pán)進(jìn)行輸入 (除非手動(dòng)調(diào)用 QWidget::activateWindow() 函數(shù) |
Qt::FramelessWindowHint | 無(wú)法移動(dòng)和改變大小的無(wú)窗口邊框的窗口 |
Qt::NoDropShadowWindowHint | 禁用窗口陰影 |
Qt::WindowTitleHint | 帶標(biāo)題欄的窗口 |
Qt::WindowSystemMenuHint | 帶系統(tǒng)菜單和盡可能地添加一個(gè)關(guān)閉按鈕的窗口 |
Qt::CustomizeWindowHint | 關(guān)閉默認(rèn)窗口標(biāo)題提示欄 |
Qt::WindowMinimizeButtonHint | 窗口添加一個(gè)最小化按鈕 |
Qt::WindowMaximizeButtonHint | 窗口添加一個(gè)最大化按鈕 |
Qt::WindowCloseButtonHint | 窗口添加一個(gè)關(guān)閉按鈕 |
Qt::WindowContextHelpButtonHint | 窗口添加一個(gè)幫助按鈕 |
Qt::WindowShadeButtonHint | 如果窗口管理器支持,則在最小化按鈕的位置添加一個(gè)陰影按鈕 |
Qt::WindowStaysOnTopHint | 通知窗口系統(tǒng)置頂窗口 |
Qt::WindowStaysOnBottomHint | 通知窗口系統(tǒng)置于最底層窗口 |
- 部分代碼(更新窗口標(biāo)志)
void ControllerWindow::updatePreview()
{
Qt::WindowFlags flags = 0;
if (windowRadioButton->isChecked()) {
flags = Qt::Window;
} else if (dialogRadioButton->isChecked()) {
flags = Qt::Dialog;
} else if (sheetRadioButton->isChecked()) {
flags = Qt::Sheet;
} else if (drawerRadioButton->isChecked()) {
flags = Qt::Drawer;
} else if (popupRadioButton->isChecked()) {
flags = Qt::Popup;
} else if (toolRadioButton->isChecked()) {
flags = Qt::Tool;
} else if (toolTipRadioButton->isChecked()) {
flags = Qt::ToolTip;
} else if (splashScreenRadioButton->isChecked()) {
flags = Qt::SplashScreen;
}
if (msWindowsFixedSizeDialogCheckBox->isChecked())
flags |= Qt::MSWindowsFixedSizeDialogHint;
if (x11BypassWindowManagerCheckBox->isChecked())
flags |= Qt::X11BypassWindowManagerHint;
if (framelessWindowCheckBox->isChecked())
flags |= Qt::FramelessWindowHint;
if (windowNoShadowCheckBox->isChecked())
flags |= Qt::NoDropShadowWindowHint;
if (windowTitleCheckBox->isChecked())
flags |= Qt::WindowTitleHint;
if (windowSystemMenuCheckBox->isChecked())
flags |= Qt::WindowSystemMenuHint;
if (windowMinimizeButtonCheckBox->isChecked())
flags |= Qt::WindowMinimizeButtonHint;
if (windowMaximizeButtonCheckBox->isChecked())
flags |= Qt::WindowMaximizeButtonHint;
if (windowCloseButtonCheckBox->isChecked())
flags |= Qt::WindowCloseButtonHint;
if (windowContextHelpButtonCheckBox->isChecked())
flags |= Qt::WindowContextHelpButtonHint;
if (windowShadeButtonCheckBox->isChecked())
flags |= Qt::WindowShadeButtonHint;
if (windowStaysOnTopCheckBox->isChecked())
flags |= Qt::WindowStaysOnTopHint;
if (windowStaysOnBottomCheckBox->isChecked())
flags |= Qt::WindowStaysOnBottomHint;
if (customizeWindowHintCheckBox->isChecked())
flags |= Qt::CustomizeWindowHint;
previewWindow->setWindowFlags(flags);
...
}
關(guān)于更多
- 在QtCreator軟件可以找到:
what_find
- 或在以下Qt安裝目錄找到:
C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\widgets\widgets\windowflags
- 相關(guān)鏈接
https://doc.qt.io/qt-5/qtwidgets-widgets-windowflags-example.html
- Qt君公眾號(hào)回復(fù)『Qt示例』獲取更多內(nèi)容洛勉。