Qt基础-窗口(界面)的显示设置

可以在Qt的帮助文档中搜索“Qt::WindowFlags”或“Qt::WindowStates”来查看窗口的类型;


设窗口的对象为dlg;

  • 最大化显示:
dlg.showMaximized();
  • 模态显示
setWindowModality(Qt::ApplicationModal);
  • 窗口风格WindowFlags

有setWindowFlag()和setWindowFlags()两个函数可供使用;
例如设置窗口无边框且置顶显示:

  1. setWindowFlag(此方法只能在Qt5.9及以上可用)
setWindowFlag(Qt::WindowStaysOnTopHint);	//所有置顶显示
setWindowFlag(Qt::FramelessWindowHint);		//去掉边框
  1. setWindowFlags
setWindowFlags(Qt::WindowStaysOnTopHint|Qt::FramelessWindowHint);

注意不能分开设置,如果按以下写法,则只会设置无边框,不会置顶显示:

setWindowFlags(Qt::WindowStaysOnTopHint);	
setWindowFlags(Qt::FramelessWindowHint);

最后一个setWindowFlags会将前面所有的窗口属性设为默认,然后再进行设置,如果要保留前面的设置,可以按如下写法:

setWindowFlags(windowFlags()|Qt::FramelessWindowHint);

如果要取消某(几)个属性,,可以按如下写法:

setWindowFlags(windowFlags()&~(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint));



常见的窗口属性:

枚举值

描述

效果

Qt::CustomizeWindowHint

关闭默认的窗口属性(貌似只能通过setWindowFlags设置,没有最大/小化、关闭按钮,但可以调节窗口大小)

如何把windows的窗口显示在容器内_Qt

Qt::FramelessWindowHint

去除窗口边界,无法通过鼠标移动、调整窗口大小

如何把windows的窗口显示在容器内_如何把windows的窗口显示在容器内_02

Qt::WindowStaysOnTopHint

置顶显示(在所有程序的上面,区分模态显示)

-

Qt::WindowMinimizeButtonHint

添加最小化按钮(如果单独取反只会变成不可点击)

如何把windows的窗口显示在容器内_如何把windows的窗口显示在容器内_03

Qt::WindowMaximizeButtonHint

添加最大化按钮(如果单独取反只会变成不可点击)

如何把windows的窗口显示在容器内_如何把windows的窗口显示在容器内_04

Qt::WindowMinMaxButtonsHint

添加最小化和最大化按钮(如果取反会消失)

如何把windows的窗口显示在容器内_qt_05

Qt::WindowCloseButtonHint

添加关闭按钮(如果单独取反只会变成不可点击)

如何把windows的窗口显示在容器内_模态_06

  • 常用的设置
setWindowFlags(windowFlags()&~(Qt::WindowMinMaxButtonHint));	//取消最大最小化按钮
setWindowModality(Qt::ApplicationModal);						//置顶显示,阻塞其他窗口
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);		//置顶显示,不阻塞其他窗口,在该程序所有窗口之上

dlg.setParent(this,Qt::Window);									//置顶显示,不阻塞其他窗口,只在该父窗口之上,注意:使用此句时在dlg构造函数中使用setWindowFlags设置窗体不起作用,setWindowFlags必须放到setParent之后

setWindowState(windowState() ^ Qt::WindowFullScreen);			//在正常显示和全屏之间切换
//非模态显示,位于其他窗口之上,但是点击其他窗口会置后
dlg.show();
dlg.raise();
  • 设置窗口固定大小
setFixedHeight(sizeHint().height());
setFixedWidth(sizeHint().width());



  • 设置窗口属性setAttribute()
setAttribute(Qt::WA_TranslucentBackground);		//设置窗体背景透明