我的需求:想全屏一个子窗口QMidSubwindow,禁止显示最大化最小化和关闭按钮。
我开始尝试的是网上介绍的方法,把结果展现给大家一下,最后再总结:
方法1:QMidSubwindow直接调用showMaximized(),我的疑问在图片上,为啥我的禁止子窗口显示最大化、最小化、关闭按钮,没有成功呢???
源码:
ExaminationForm *patientExamForm = new ExaminationForm();
patientExamForm->setWindowTitle("病人检查");
QMdiSubWindow *patientExamSubWindow = ui.mdiArea->addSubWindow(patientExamForm);
//禁止子窗口显示最大化、最小化和关闭按钮
patientExamSubWindow->setWindowFlags(Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);
//最大化显示子窗口
patientExamSubWindow->showMaximized();
结果图:
主窗口图
点击工具栏辐射图标,打开我的子窗口。结果如下:
方法2:调用showFullScreen()方法
解决过程1,直接调用showFullScreen()方法
源码:
ExaminationForm *patientExamForm = new ExaminationForm();
patientExamForm->setWindowTitle("病人检查");
patientExamSubWindow->setWindowFlags(Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);
patientExamSubWindow->showFullScreen();
结果
解决过程2,从网上知道
写道
QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用。子窗口的特征是 Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen()无效。通过对对子窗口调 用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);将其设为窗口模式后,即可调用 showFullScreen();进行全屏显示了。
所以更改源码加上窗口标记 setWindowFlags
QMdiSubWindow *patientExamSubWindow = ui.mdiArea->addSubWindow(patientExamForm);
patientExamSubWindow->setWindowFlags(Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);
//设置成窗口形式
patientExamSubWindow->setWindowFlags(Qt::Window);
patientExamSubWindow->showFullScreen();
解决过程3,最大化、最小化窗口、关闭按钮没消失,是因为设置窗口标记的时候不能累加,应该一次设定窗口标记。
预示源码改成这样
ExaminationForm *patientExamForm = new ExaminationForm();
patientExamForm->setWindowTitle("病人检查");
QMdiSubWindow *patientExamSubWindow = ui.mdiArea->addSubWindow(patientExamForm);
patientExamSubWindow->setWindowFlags(Qt::Window&Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);
patientExamSubWindow->showFullScreen();
结果:
改成这样写patientExamSubWindow->setWindowFlags(Qt::Window&Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);
只是解决了屏蔽子窗口的最大化等按钮问题,以及解决了让子窗口不跳出主窗口等问题(这个地方我也不懂)
但是最大的问题,为啥showFullScreen没起到作用呢,没最大化展现啊。。。。
到底是什么原因呢?
我这个子窗口也是顶级窗口也是非模态窗口啊,为啥showFullScreen不行呢。。。我正在考虑中。。。
//重新画以显示器尺寸大小画界面
navigationSubWindow->setGeometry(0,0,QApplication::desktop()->width(),QApplication::desktop()->height());
navigationSubWindow->show()
//窗口无frame无最大最小框,无框架就是没有标题栏,状态栏和边框。
setWindowFlags(Qt::FramelessWindowHint)
分享到:
相关推荐
Qt 子窗口父窗口切换,窗口间传值
qt 子窗口上显示的图片点击显示到主窗口上
qt的子窗口控件使用实例,运行环境是QT5,供大家参考使用
1. Qt嵌入子Qt程序窗口到当前程序 2. 两程序都是Qt Widgets项目 3. 项目IDE为VS+Qt
QT的全屏显示相关代码,自己用过的,挺不错的,共享给大家。
Qt中利用信号与槽将值从子窗口传输到父窗口的,主要在我的博客里叙述
Qt主窗口与子窗口之间相互传值,对新手有帮助。
qt--主窗口中按钮弹出子窗口,并把主窗口信号发送给子窗口
在子窗口中调用父窗口的成员函数的方法 1、用FindWindow("类名(可以是派生类)","窗口标题")或GetParent(),二者均能返回父窗口句柄,并能直接使用其成员函数。但是此法只能调用CWnd类里的成员函数,而不能调用自己...
在QT程序主界面中添加子窗口,初学者学习例程
qt 工程文件 实现父子窗口之间的切换 主要步骤如下: 1.在子窗口的cpp源文件中(childwindow.cpp),声明一个自定义信号(void mysignal()) 和 一个用于发送自定义信号的自定义槽函数( void sendMysignal() )。 2.在...
python Qt5GUI界面主窗口和子窗口相互传值,保证能用。。。。。。。。。。。。。!
QWidget 无边框,可拖动,可改变大小窗口。代码简单可复用。主窗口,子窗口都可以使用。
# Qt无边框窗口最大化时拖拽还原代码 通过重定义eventFilter()函数和changeEvent()函数,实现Qt无边框窗口最大化时拖动标题栏还原窗口的效果。
QT自定义窗口 自由拖动 自定义标题
pyqt5对用qt designer设计的窗体实现弹出子窗口,里面包含3个文件mainWindow.py,childWindow.py,action.py,经测试可以跑通
qt 聊天窗口 动态表情显示 有需要源码的发邮件yanhubin@163.com,测试代码,未修改,未注释,很凌乱乱,嫌弃的就不要找我要了。免得又说好乱的代码,根本看不了。看不懂的可以问我!
demo主要采用信号与槽函数的方式对两个界面进行了不同切换,自定义按钮方式,子窗口与主窗口点击切换。该代码中涉及的技术有1.自定义函数类,在主函数中实例化。2.通过信号与槽在不同类中建立联系,在子类中定义信号...
qt 实现阴影窗口 源码编译通过
c++网页全屏显示 基于QtWebEngine