Qt基础-窗口(界面)的显示设置
可以在Qt的帮助文档中搜索“Qt::WindowFlags”或“Qt::WindowStates”来查看窗口的类型;
设窗口的对象为dlg;
- 最大化显示:
dlg.showMaximized();
- 模态显示
setWindowModality(Qt::ApplicationModal);
- 窗口风格WindowFlags
有setWindowFlag()和setWindowFlags()两个函数可供使用;
例如设置窗口无边框且置顶显示:
- setWindowFlag(此方法只能在Qt5.9及以上可用)
setWindowFlag(Qt::WindowStaysOnTopHint); //所有置顶显示
setWindowFlag(Qt::FramelessWindowHint); //去掉边框
- 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设置,没有最大/小化、关闭按钮,但可以调节窗口大小) | |
Qt::FramelessWindowHint | 去除窗口边界,无法通过鼠标移动、调整窗口大小 | |
Qt::WindowStaysOnTopHint | 置顶显示(在所有程序的上面,区分模态显示) | - |
Qt::WindowMinimizeButtonHint | 添加最小化按钮(如果单独取反只会变成不可点击) | |
Qt::WindowMaximizeButtonHint | 添加最大化按钮(如果单独取反只会变成不可点击) | |
Qt::WindowMinMaxButtonsHint | 添加最小化和最大化按钮(如果取反会消失) | |
Qt::WindowCloseButtonHint | 添加关闭按钮(如果单独取反只会变成不可点击) |
- 常用的设置
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); //设置窗体背景透明