`
qimo601
  • 浏览: 3449016 次
  • 性别: 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之子窗口控件使用

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

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

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

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

    QT父子窗口相互传值

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

    Qt6:子窗口向父窗口传值

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

    QTwindow_qtaddwindow_QT编程_QT_子窗口_

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

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

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

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

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

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

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

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

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

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

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

    qt 父子窗口切换

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

    QT4.6 ToolBar浮动停靠,窗口全屏显示

    你可以查看`main.cpp`或其他源文件,学习如何在QT4.6环境中创建和管理`QToolBar`和`QDockWidget`,以及如何控制窗口的全屏状态。 总的来说,QT4.6的`QToolBar`和`QDockWidget`提供了灵活的布局和交互方式,让开发者...

    QT自定义窗口边框

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

    Qt无边框窗口最大化时拖拽还原代码

    在Qt编程中,有时我们可能需要创建一个没有系统默认边框和标题栏的窗口,以实现自定义的界面效果。然而,这样的无边框窗口在最大化后,通常无法通过常规方式拖动来还原窗口大小。本篇文章将详细介绍如何通过重定义`...

    QT两个窗口传值

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

Global site tag (gtag.js) - Google Analytics