Qt子窗口QMidSubwindow全屏出现的问题总结

我的需求:想全屏一个子窗口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()方法

源码:

Cpp代码  

  1. ExaminationForm *patientExamForm = new ExaminationForm();

  2. patientExamForm->setWindowTitle("病人检查");
  3. patientExamSubWindow->setWindowFlags(Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);

  4. patientExamSubWindow->showFullScreen();

 

结果

解决过程2,从网上知道

写道

QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用。子窗口的特征是
Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen()无效。通过对对子窗口调
用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);将其设为窗口模式后,即可调用
showFullScreen();进行全屏显示了。

所以更改源码加上窗口标记 setWindowFlags

Cpp代码  

  1. QMdiSubWindow *patientExamSubWindow = ui.mdiArea->addSubWindow(patientExamForm);

  2. patientExamSubWindow->setWindowFlags(Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);

  3. //设置成窗口形式

  4. patientExamSubWindow->setWindowFlags(Qt::Window);

  5. patientExamSubWindow->showFullScreen();

解决过程3,最大化、最小化窗口、关闭按钮没消失,是因为设置窗口标记的时候不能累加,应该一次设定窗口标记。

预示源码改成这样

Cpp代码  

  1. ExaminationForm *patientExamForm = new ExaminationForm();

  2. patientExamForm->setWindowTitle("病人检查");
  3. QMdiSubWindow *patientExamSubWindow = ui.mdiArea->addSubWindow(patientExamForm);

  4. patientExamSubWindow->setWindowFlags(Qt::Window&Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);

  5. 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)

时间: 2024-11-08 08:03:35

Qt子窗口QMidSubwindow全屏出现的问题总结的相关文章

Qt 子窗口内嵌到父窗口中(无边框附体show即可)

有时需要把一个子窗口内嵌进入父窗口当中. 我们可以这样做 1.新建一个QWidget 或者QDialog的子类 ClassA(父类为ClassB) 2.在新建类的构造函数中添加设置窗口属性 [cpp] view plaincopyprint? setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint); 关闭默认的窗口标题提示以及没有边框的窗口. 3.在父窗口中调用. [html] view plaincopyprint? Cl

三个基本功能:新建窗口、关闭窗口和全屏控制

共两个文件,index.html和setting.html 下面是index.html的代码: 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html lang="en"> 3 4 <head> 5 <meta http-equiv=&q

QT 子窗口监听主窗口信号(超级简单,但是好用,比如主窗口移动的时候,子窗口不要再继续处理任务)

MainWindow *ptr = NULL; ptr = (MainWindow*)parentWidget(); connect(ptr, SIGNAL(param_result(bool)), this, SLOT(param_add(bool))); http://blog.csdn.net/emdfans/article/details/42667403

QT 全屏显示子窗口

QT 中全屏显示子窗口的方法 QT 中窗口部件 QWidget 成员函数 showFullScreen();是用于将窗口部件全屏显示 但是他只对窗口模式的部件有用.子窗口的特征是 Qt::SubWindow不是独立的窗 口.因此对其调用 showFullScreen无效.通过对子窗口调用setWindowFlags Qt: :Dialog或 setWindowFlagsQt::Window将其设为窗口模式后即可 调用 showFullScreen();进行全屏显示了. 相对于子窗口的全屏显示方法

Q窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)

//Qt主窗口没有最小化,最大化按钮且最大化显示  int main(int argc, char *argv[]) { QApplication a(argc, argv); TestQtForWinCE w; w.setWindowFlags(w.windowFlags()& ~Qt::WindowMaximizeButtonHint& ~Qt::WindowMinimizeButtonHint); w.showMaximized(); return a.exec(); } 这里的&q

QT中关于窗口全屏显示与退出全屏的实现

近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助. 首先,在QT中对于窗口显示常用的有这么几个方法可以调用: Qt全屏显示函数            showFullScreen() Qt最大化显示函数         showMaximized()Qt最小化显示函数         showMinimized()Qt固定尺寸显示函数      resize(x,y)Qt设置最大尺寸函数      setMaximum

判断当前窗口是否是全屏的山寨版和官方版

山寨版很好很强大: 简单介绍一下,这是我用过的,获取屏幕的四个顶点(具体检测的时候可以向屏幕的中心剪一个像素,譬如检测 1,1而不是0,0)所在窗口的句柄,如果四个句柄都相同,则认为是全屏状态,其实有个问题,有些程序全屏的时候,还会有窗口弹出来,典型的像播放软件,全屏的时候,下面还有一个工具栏,这个工具栏和后面的播放窗口是不同的,所以检测失败了.对这种方法加强就是,获取四个点窗口所在的进程PID,如果PID想同,则认为是全屏,但是仍然有问题,检测explorer的时候就直接认为是全屏了,呵呵,所

Win7下连远程桌面 窗口 全屏 切换

今天在win7下用远程桌面,不小心把桌面上面的还原按钮给点到了, 于是整个远程桌面就变成了本地机的一个窗口了,可以看见任务栏的那种 有些人觉得这样方便,可以看见qq消息等,但我想切回全屏时一时找不到按钮,囧 百度了下,有快捷键ctrl+alt+break 貌似在XP下连远程桌面时,只能全屏 其它快捷键也贴出来,不过貌似都用不着 链接:http://wenwen.soso.com/z/q210960589.htm?sp=1176 快捷键 描述 Alt+Page Up 从左向右在程序之间切换. Al

Qt的窗口的最大化。

1.window.showFullScreen()//此方法只对顶级窗口有效,对子窗口无效 QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用.子窗口的特征是 Qt::SubWindow,不是独立的窗口.因此对其调用showFullScreen()无效.通过对对子窗口调 用:setWindowFlags(Qt::Dialog):或setWindowFlags(Qt::Window):将其设为窗口模式后,即可调用 showF