您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

QMdiArea之QMdiSubWindow子窗口隐藏系统标题栏

关于QMdiSubWindow去掉系统边框最小化的问题

  • 问题简述
    • 解决方案
    • 具体代码示例

问题简述

QMdiSubWindow去掉系统边框然后使用自定义实现菜单栏,进行最小化操作,第一个窗口的位置坐标在mdiarea显示范围之外。所以造成消失的问题。应该是自定义菜单栏没有重写对应的系统事件和最小化窗口的size。

解决方案

将最小化之前,显示系统标题栏,然后最小化,然后在隐藏系统标题栏,setvisible(true)。就解决这个问题。之前比较困扰,懒得去理他,最近才想到这个解决方案。

具体代码示例

void MdiSubTitleBar::slot_Clicked()
{
    QPushButton *pButton = qobject_cast<QPushButton *>(sender());
    QWidget *pWindow =m_pMdiSub;
    if (pButton == m_pMinimizeButton)
    {
    	//设置窗口系统属性,恢复标题栏。
        m_pMdiSub->parentWidget()->setWindowFlags(Qt::Widget);
        //恢复标题栏之后进行最小化
        m_pMdiSub->parentWidget()->showMinimized();
		//最小化之后隐藏系统标题栏。
        m_pMdiSub->parentWidget()->setWindowFlags(Qt::FramelessWindowHint);
        m_pMdiSub->show();  //这里必须要show或者setvisible(true),不然有问题。
        emit sig_updateSubWindowState(Min);
    }
}

分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进