`
qimo601
  • 浏览: 3438577 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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

    博客分类:
  • Qt
阅读更多

 

我的需求:想全屏一个子窗口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的窗口系统和信号与槽机制。本文将深入探讨如何在Qt环境中实现子窗口与父窗口的切换以及如何在窗口之间传递数据。 首先...

    Qt嵌入子Qt程序窗口到当前程序

    1. **创建子窗口类**:首先,你需要为要嵌入的子窗口创建一个新的Qt Widgets类。这个类通常继承自`QWidget`或`QMainWindow`,并包含所需的UI元素和逻辑。 2. **实例化子窗口**:在主程序中,你需要实例化这个子窗口...

    QT之子窗口控件使用

    2. 在`mainwindow.ui`中添加子窗口控件:通过QT Designer将子窗口控件添加到主窗口布局中,如`QStackedWidget`用于页面切换,`QDockWidget`用于浮动窗口,`QTabWidget`用于标签页。 3. 实现子窗口的添加和切换:在`...

    qt 子窗口显示的图片点击显示到主窗口

    以上就是"qt 子窗口显示的图片点击显示到主窗口"这一主题涵盖的主要知识点,包括Qt框架的理解、窗口和控件的使用、事件处理、窗口间通信以及性能优化。这些知识对于开发复杂的Qt GUI应用程序至关重要。

    Qt--子窗口向父窗口传值

    本主题将详细探讨如何在Qt中实现从子窗口(子对话框)向父窗口传递数据,具体涉及的主要文件包括`mainwindow.cpp`、`main.cpp`、`myform.cpp`、`logindlg.cpp`、`mainwindow.h`、`myform.h`、`logindlg.h`以及UI文件...

    QT全屏显示代码示例

    QT全屏显示是QT编程中一个常见的需求,特别是在开发桌面应用程序时,为了提供更好的用户体验,开发者经常需要将应用切换到全屏模式。本篇将详细讲解如何在QT中实现全屏显示,并通过代码示例来解析`...

    QT父子窗口相互传值

    在Qt编程中,窗口间的通信是常见的需求,无论是主窗口(MainWindow)与子窗口(ChildWindow)之间的数据交互,还是不同子窗口之间的信息传递。"QT父子窗口相互传值"这个主题,主要涉及Qt框架中如何有效地实现这种...

    qt--主窗口中按钮弹出子窗口,并把主窗口信号发送给子窗口

    在Qt框架中,创建一个主窗口并从主窗口中弹出子窗口是常见的操作,尤其在设计GUI应用程序时。这个过程通常涉及到信号和槽机制,这是Qt的核心特性之一,用于对象间的通信。让我们深入探讨如何在Qt中实现这一功能。 ...

    Qt6:子窗口向父窗口传值

    在Qt6框架中,子窗口向父窗口传递数据是一个常见的需求,这通常涉及到窗口间的通信。Qt6提供了多种方法来实现这种通信,包括信号与槽、共享数据对象、全局变量等。下面我们将深入探讨这些方法,并通过实例进行解析。...

    QTwindow_qtaddwindow_QT编程_QT_子窗口_

    在QT中,窗口管理是构建用户界面的重要部分,"QTwindow_qtaddwindow_QT编程_QT_子窗口_"这个标题显然是关于如何在QT程序中创建和管理子窗口的教程。 在QT中,窗口主要由`QWidget`类及其派生类来表示,如`...

    c++网页全屏显示 基于QtWebEngine

    本文将深入探讨如何利用QtWebEngine实现C++中的网页全屏显示。 首先,我们需要理解QtWebEngine的核心组件:`QWebEngineView`。它是显示网页的主要类,相当于QtWebKit中的`QWebView`。`QWebEngineView`可以加载URL并...

    在子窗口中调用父窗口的成员函数的实例

    在子窗口中调用父窗口的成员函数的方法 1、用FindWindow("类名(可以是派生类)","窗口标题")或GetParent(),二者均能返回父窗口句柄,并能直接使用其成员函数。但是此法只能调用CWnd类里的成员函数,而不能调用自己...

    python Qt5GUI界面主窗口和子窗口相互传值,保证能用

    本文将深入探讨如何在Qt5 GUI中实现主窗口(Parent Window)与子窗口(Child Window)之间的数据传递,确保程序的正常运行。 首先,我们需要了解Qt5中的窗口类。`QMainWindow`是Qt5中的主要窗口类,通常用于创建...

    pyqt5对用qt designer设计的窗体实现弹出子窗口test.zip

    这个“pyqt5对用qt designer设计的窗体实现弹出子窗口test.zip”示例就演示了如何在主窗口中触发一个子窗口的弹出。下面我们将详细探讨这一过程中的关键知识点。 首先,`mainWindow.py`文件通常包含了主窗口...

    QT自定义窗口边框

    在QT编程中,自定义窗口边框是一种常见的需求,它可以让开发者创造出更加独特且符合应用风格的用户界面。本教程将深入探讨如何在QT中实现自定义窗口边框,主要涉及的技术点包括QWindow、QOpenGLWidget以及QEventLoop...

    qt 聊天窗口 示例

    总结来说,QT聊天窗口示例涵盖了Qt的基本使用,包括窗口设计、布局管理、事件处理、动态表情显示、网络通信以及用户交互等多个方面。尽管原始代码可能比较混乱,但通过学习和理解这些关键知识点,你可以逐步构建出一...

    Qt6:子窗口向父窗口传值(多控件版)

    在Qt6框架中,开发GUI应用程序时,我们经常会遇到子窗口与父窗口之间通信的需求,尤其是在涉及多个控件交互的场景。子窗口向父窗口传递数据是常见的操作,例如用户在子窗口中填写表单后,点击确认按钮,将表单数据...

    QT两个窗口传值

    本主题将深入探讨如何在QT的两个窗口间传递值,以便在一个窗口(通常称为子窗口)中输入数据后,能够将这些数据有效地传递回父窗口。 首先,我们需要了解QT中的基本窗口类,如`QWidget`、`QMainWindow`以及`QDialog...

    Qt 5.11 无边框可拖动 可改变大小窗口

    在Qt编程中,创建一个无边框但同时具备拖动和自定义大小功能的窗口是一项常见的需求,尤其在设计简洁的用户界面时。Qt库提供了一种灵活的方式来实现这种效果,即使在没有默认窗口装饰(如标题栏和边框)的情况下,...

    qt 父子窗口切换

    qt 工程文件 实现父子窗口之间的切换 主要步骤如下: 1.在子窗口的cpp源文件中(childwindow.cpp),声明一个自定义信号(void mysignal()) 和 一个用于发送自定义信号的自定义槽函数( void sendMysignal() )。 2.在...

Global site tag (gtag.js) - Google Analytics