欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt官方示例-窗口标志

程序员文章站 2022-06-17 09:41:44
...

窗口标志示例展示了如何使用Qt中可用的窗口标志类型指定窗口系统属性

Qt官方示例-窗口标志

  根据示例整理出来的各窗口标志作用一览表如下:

  • 只能设置一个的窗口标志对照表
窗口标志 描述
Qt::QWidget 窗口的默认属性
Qt::Window 带有窗口系统框架和标题栏
Qt::Dialog 对话框(通常标题栏中没有最大化或最小化按钮)
Qt::Sheet macOS表单式窗口
Qt::Drawer macOS抽屉式窗口
Qt::Popup 弹出式顶层窗口
Qt::Tool 显示工具按钮的窗口
Qt::Tooltip 没有标题栏和窗口边框的窗口
Qt::SplashScreen 启动窗口类似于QSplashScreen
  • 可以设置多个的窗口标志对照表
窗口标志 描述
Qt::MSWindowsFixedSizeDialogHint Windows系统固定大小窄边框窗口
Qt::X11BypassWindowManagerHint 无窗口边框的窗口,完全忽视窗口管理器和用户无法使用键盘进行输入
(除非手动调用QWidget::activateWindow()函数
Qt::FramelessWindowHint 无法移动和改变大小无窗口边框的窗口
Qt::NoDropShadowWindowHint 禁用窗口阴影
Qt::WindowTitleHint 标题栏的窗口
Qt::WindowSystemMenuHint 系统菜单和尽可能地添加一个关闭按钮的窗口
Qt::CustomizeWindowHint 关闭默认窗口标题提示栏
Qt::WindowMinimizeButtonHint 窗口添加一个最小化按钮
Qt::WindowMaximizeButtonHint 窗口添加一个最大化按钮
Qt::WindowCloseButtonHint 窗口添加一个关闭按钮
Qt::WindowContextHelpButtonHint 窗口添加一个帮助按钮
Qt::WindowShadeButtonHint 如果窗口管理器支持,则在最小化按钮的位置添加一个阴影按钮
Qt::WindowStaysOnTopHint 通知窗口系统置顶窗口
Qt::WindowStaysOnBottomHint 通知窗口系统置于最底层窗口
  • 部分代码(更新窗口标志)
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);
    ...
}

关于更多

  • QtCreator软件可以找到:

Qt官方示例-窗口标志

  • 或在以下Qt安装目录找到:
C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\widgets\widgets\windowflags
  • 相关链接
https://doc.qt.io/qt-5/qtwidgets-widgets-windowflags-example.html
  • Qt君公众号回复『Qt示例』获取更多内容。