【专题7:qt上位机详解】 之 【6.QWidget2】

一个默默耕耘的工程师…

各专题目录
【专题1:工作两年再学嵌入式】
【专题2:freertos系统详解】
【专题3:从0到1写嵌入式操作系统】
【专题4:直流无刷电机控制】
【专题5:从0到1写bootloader、iap升级和产品量产】
【专题6:mcu硬件电路设计】
【专题7:qt上位机详解】
【专题8:linux应用及qt移植】
【专题9:从linux内核借鉴写代码的思路】
【专题10:面向对象和事件驱动】
【专题11:从0到1开发仪表】
【专题12:常用复杂模块从0到1】
【专题13:读书笔记】

1.窗口状态

在这里插入图片描述
  调用函数void setWindowState(Qt::WindowStates state)设置窗口大小,state可以传递以下值:

    enum WindowState {
        WindowNoState    = 0x00000000, //默认大小,在界面设计器中指定的。
        WindowMinimized  = 0x00000001,
        WindowMaximized  = 0x00000002,
        WindowFullScreen = 0x00000004,
	};
Widget w;
w.setWindowState(Qt::WindowMaximized);//窗口最大化,这个函数不是槽函数
w.show();

也可以使用一些槽函数:

showMaximized();
showFullScreen();
showMinimized(); 
showNormal();

在这里插入图片描述

2.定制窗口类型

  默认的窗口有标题栏,将标题栏去掉(可以做到界面样式/颜色的统一),并且添加一些自己的关闭、最大化和最小化按钮。

  • 默认的窗口
    在这里插入图片描述
    在这里插入图片描述

  通过下面两个函数可以将标题栏、最大化、最小化、关闭几个控件给隐藏或显示。

void setWindowFlag(Qt::WindowType, bool on = true);//单独设置一个
void overrideWindowFlags(Qt::WindowFlags type);//用或运算,可以设置多个

有很多flag:

 enum WindowType {
        WindowTitleHint = 0x00001000,
        WindowSystemMenuHint = 0x00002000,
        WindowMinimizeButtonHint = 0x00004000,
        WindowMaximizeButtonHint = 0x00008000,
        WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint,
        WindowContextHelpButtonHint = 0x00010000,
        WindowShadeButtonHint = 0x00020000,
        WindowStaysOnTopHint = 0x00040000,
        WindowTransparentForInput = 0x00080000,
        WindowOverridesSystemGestures = 0x00100000,
        WindowDoesNotAcceptFocus = 0x00200000,
        MaximizeUsingFullscreenGeometryHint = 0x00400000,

        CustomizeWindowHint = 0x02000000,
        WindowStaysOnBottomHint = 0x04000000,
        WindowCloseButtonHint = 0x08000000,
        MacWindowToolBarButtonHint = 0x10000000,
        BypassGraphicsProxyWidget = 0x20000000,
        NoDropShadowWindowHint = 0x40000000,
        WindowFullscreenButtonHint = 0x80000000
};

3.案例:隐藏关闭按钮

Widget w;
w.setWindowFlag(Qt::WindowCloseButtonHint, false);
w.show();
Widget w;
//标题栏保留,去除所有按钮 
w.setWindowFlags(Qt::WindowTitleHint | Qt::CustomizeWindowHint); 
w.show();

在这里插入图片描述

//这种形式的界面很常用
Widget w;
//去除界面边框和标题栏
w.setWindowFlags(Qt::FramelessWindowHint);
w.show();

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_29083043/article/details/106336751