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

源码:

  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

  1. QMdiSubWindow *patientExamSubWindow = ui.mdiArea->addSubWindow(patientExamForm);
  2. patientExamSubWindow->setWindowFlags(Qt::WindowMinMaxButtonsHint&Qt::WindowCloseButtonHint);
  3. //设置成窗口形式
  4. patientExamSubWindow->setWindowFlags(Qt::Window);
  5. patientExamSubWindow->showFullScreen();

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

预示源码改成这样

  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)

 

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

  1. QT 子窗口退出全屏

    m_pWidget代表子窗口, 子窗口显示全屏: m_pWidget->setWindowFlags(Qt::Dialog); m_pWidget->showFullScreen(); 子 ...

  2. Qt 子窗口监听主窗口信号

    Qt 子窗口监听主窗口信号(转载)  原文链接:https://www.cnblogs.com/ybqjymy/p/12169762.html 1 MainWindow *ptr = NULL; 2 ...

  3. MFC 带Ribbonbar的窗口 实现全屏和取消全屏

    void CMainFrame::FullScreen(){    m_wndRibbonBar.ShowWindow(SW_HIDE);//隐藏工具栏         m_wndStatusBar. ...

  4. qt 子窗口内嵌到父窗口

    类声明 动态申请子窗口类对象 ClassA *a = new ClassA(this); 隐藏边框 a->setWindowFlags(Qt::CustomizeWindowHint|Qt::F ...

  5. Qt子窗口设置背景色只能应用到其中的部件的问题

    问题描述:设置父窗口后子窗口会嵌在父窗口中,背景变透明,此时用qss设置子窗口的背景色发现只应用到的子窗口的控件中,除控件外的地方并没有应用到背景色. 解决方法:不使用qss设置背景色,重写paint ...

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

    有时需要把一个子窗口内嵌进入父窗口当中. 我们可以这样做 1.新建一个QWidget 或者QDialog的子类 ClassA(父类为ClassB) 2.在新建类的构造函数中添加设置窗口属性 setWi ...

  7. QT子窗口及停靠实现

    Demo的效果 头文件中的变量声明 //退出动作 QAction* exit; //菜单栏菜单 QMenu* filemenu; QMenu* actiona; //在状态栏的标签控件 QLabel* ...

  8. Qt 子窗口内嵌到父窗口中

    有时需要把一个子窗口内嵌进入父窗口当中. 我们可以这样做 1.新建一个QWidget 或者QDialog的子类 ClassA(父类为ClassB) 2.在新建类的构造函数中添加设置窗口属性 setWi ...

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

    MainWindow *ptr = NULL; ptr = (MainWindow*)parentWidget(); connect(ptr, SIGNAL(param_result(bool)), ...

随机推荐

  1. selenium在爬虫中的应用之动态数据爬取

    一.selenium概念 selenium 是一个基于浏览器自动化的模块 selenium爬虫之间的关联: 1.便捷的获取动态加载的数据 2.实现模拟登录 基本使用 pip install selen ...

  2. 手把手封装axios

    大佬链接: https://juejin.im/post/5b55c118f265da0f6f1aa354 一.axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库, ...

  3. Oracle创建索引;查询索引

    1.创建索引 create index 索引名 on 表名(列名); 2.删除索引 drop index 索引名; 3.创建组合索引 create index 索引名 on 表名(列名1,,列名2); ...

  4. 解决WinForm屏幕缩放适配只需修改两个Form的两个属性

    最近要做一个windows下截屏识别文字的程序,调试发现截取的图像显示不完整. 输出了Screen.PrimaryScreen.Bounds.Width获取的值,结果与实际分辨率不同,所以确定了与我的 ...

  5. db2 with用法

    最近在研究db2 递归查询时想到了with,一直以为with只是用来查询递归,但是实际with功能强大,还有更加强大的功能,偶然读到一位大神的文章,对with做了很详细的解读,特贴出来供大家学习研究 ...

  6. java lambda 所有列求和

    今天做东西的时候遇到一个需求,求list集合所有列的求和.折腾半天也没有搞出来,网上大部分都是单列求和就像下面这样的,其他都差多,什么 min,max avg count 只得到了number这个属性 ...

  7. Flutter——ListView组件(平铺列表组件)

    ListView的常见参数: 名称 类型 说明 scrollDirection Axis Axis.horizontal 水平列表 Axis.vertical 垂直列表 padding EdgeIns ...

  8. C# Winform TabControl 双击关闭TabPage

    在使用TabControl控件时,需要考虑自动创建的TabPage页实现——关闭功能 思路一:自定义TabControl控件,添加关闭按钮 思路二:TabControl控件TabPage显示ToolT ...

  9. VMware无法连接MKS:套接字连接尝试次数太多解决

    粘贴自:https://jingyan.baidu.com/article/425e69e61eb578be15fc16ae.html VMware在开启虚拟机的时候,突然弹出[无法连接MKS:套接字 ...

  10. c#读取文件夹路径,并保存在textBox1中

    private void button3_Click(object sender, RoutedEventArgs e) { System.Windows.Forms.FolderBrowserDia ...