《Qt开发》MDI应用程序

实现多个子窗体的自定义布局(自定义子窗体尺寸和位置)、平铺布局(titleSubWindows)和分页模式(QMdi::TabbedView)。

运行效果图

初始布局(自定义布局)

平铺布局

多页模式

实现过程

1.创建项目和子窗体

1. 创建项目MdiFirstDemo,并创建3个子窗体,分别为FirstSubWindow、SecondSubWindow和ThirdSubWindow。

2. 在主窗体MdiFirstDemo.ui中添加三个按钮和一个MDI Area控件,设置三个按钮水平布局,三个按钮和MDI Area垂直布局。 

2.创建项目和子窗体

1. 在MdiFirstDemo.h中声明子窗体对象和初始化函数

    FirstSubWindow *firstSubWindow;  SecondSubWindow *secondSubWindow;

    ThirdSubWindow *thirdSubWindow;

    void InitWindow();

    void InitSubWindows();

    在MdiFirstDemo.cpp中添加函数定义

    void MdiFirstDemo::InitWindow()

    {

        ui.mdiArea->setFixedWidth(1000);

        ui.mdiArea->setFixedHeight(800);

    }

    void MdiFirstDemo::InitSubWindows()

    {

        firstSubWindow = new FirstSubWindow(this);

        secondSubWindow = new SecondSubWindow(this);

        thirdSubWindow = new ThirdSubWindow(this);

        ui.mdiArea->addSubWindow(firstSubWindow);

        ui.mdiArea->addSubWindow(secondSubWindow);

        ui.mdiArea->addSubWindow(thirdSubWindow);

}

3.声明三个按钮的槽函数

public slots:

void on_pBtnInitLayout_clicked();

void on_pBtnTile_clicked();

void on_pBtnTabbedView_clicked();

在MdiFirstDemo.cpp中添加槽函数定义

    void MdiFirstDemo::on_pBtnInitLayout_clicked()

    {

        ui.mdiArea->setViewMode(QMdiArea::SubWindowView);

        ResizeSubWindows();

    }

    //上面调用函数定义如下

    void MdiFirstDemo::ResizeSubWindows()

    {

        int mdiAreaWidth = ui.mdiArea->width();

        int mdiAreaHeight = ui.mdiArea->height();

        int unitWidth = mdiAreaWidth / 3;

        int unitHeight = mdiAreaHeight / 2;

        for (int i = 0; i < ui.mdiArea->subWindowList().size(); i++)

        {

            //索引得到的子窗口顺序跟添加时顺序一致

            QMdiSubWindow *s = ui.mdiArea->subWindowList().at(i);

            //只知道这种方法可以改变子窗体尺寸

            if (i == 0)

            {

                QSize size(unitWidth, unitHeight);

                s->resize(size);

                s->move(0,0);

            }

            else if (i == 1)

            {

                QSize size(unitWidth*2, unitHeight);

                s->resize(size);

                s->move(unitWidth, 0);

            }

            else if (i == 2)

            {

                QSize size(mdiAreaWidth, unitHeight);

                s->resize(size);

                s->move(0, unitHeight);

            }

        }

    }

    //平铺布局

    void MdiFirstDemo::on_pBtnTile_clicked()

    {

        //先设置为子窗口模式,在平铺布局,防止不同显示方式叠加

        ui.mdiArea->setViewMode(QMdiArea::SubWindowView);

        ui.mdiArea->tileSubWindows();

    }

    //多页显示

    void MdiFirstDemo::on_pBtnTabbedView_clicked()

    {

        ui.mdiArea->setViewMode(QMdiArea::TabbedView);

        ui.mdiArea->setTabsClosable(true); //页面可关闭

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/325275.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高校教务系统登录页面JS分析——河北地质大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

基于Java的校车管理系统

源码跳转链接: 基于java的校车管理系统 基于Java的校车管理系统 摘要一、绪论1.1设计目的与意义1.2需求分析1.3用户、管理员用例图 二、系统总体设计2.1系统模块设计2.2数据库分析与设计2.2.1数据库概念结构设计2.2.2表结构设计2.2.3数据库连接池原理 2.3系统后台设计与分析2.…

业财融合:解密企业管理的黄金钥匙

本文提炼总结自专刊《上市公司如何打好合规与增长的双赢之战》。全书40页&#xff0c;出品方纷享销客市场部。如有需要&#xff0c;请阅读原版电子书&#xff1a;《上市公司如何打好合规与增长的双赢之战》 目 录 一、什么是业财融合&#xff1f; 二、财务部门面临的挑战…

HackTheBox - Medium - Linux - Mentor

Mentor Mentor 是一台中等难度的 Linux 机器&#xff0c;其路径包括在到达 root 之前在四个不同的用户之间切换。使用可暴力破解的社区字符串扫描“SNMP”服务后&#xff0c;会发现用于“API”端点的明文凭据&#xff0c;该端点被证明容易受到盲目远程代码执行的影响&#xff…

芯片有关新闻-China chip imports suffer steepest drop on record after US curbs

Jan 16, 2024 9:01 am 由于长期的经济不确定性和美国的出口管制&#xff0c;中国的芯片进口去年遭遇了有记录以来的最大降幅。 全球最大半导体市场的集成电路进口额下降了15.4%&#xff0c;至3494亿美元&#xff0c;这是自2004年中国海关数据公布以来的最大跌幅&#xff0c;并…

如何部署Wagtail CMS并结合cpolar内网穿透实现远程访问管理界面

文章目录 前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 前言 Wagtail是一个用Python编写的开源CMS&#xff0c;建立在Django Web框架上。Wagtail 是一个基于 Django 的开源内容管理系统&#xf…

深度学习笔记(七)——基于Iris/MNIST数据集构建基础的分类网络算法实战

文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解&#xff0c;如有遗漏或错误&#xff0c;欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 认识网络的构建结构 在神经网络的构建过程中&#xff0c;都避不开以下几个步骤&#xff1a; 导入网络和依…

32岁Android开发也来学HarmonyOS了,还涨薪了

前言 华为于去年9月正式宣布启动HarmonyOS NEXT计划&#xff0c;即“鸿蒙原生应用”全面启动。这意味着鸿蒙系统将不再兼容安卓应用&#xff0c;而是采用自研的鸿蒙内核、原生智能、方舟引擎等技术&#xff0c;构建全新的鸿蒙应用生态。 而这只是华为发力的一部分&#xff0c…

越南访问国内服务器速度慢,云桥通SD-WAN企业组网解决加速问题

面对不断增加的跨境合作和沟通需求&#xff0c;越南企业在访问国内服务器时往往面临速度缓慢的问题&#xff0c;给越南工厂与国内总部服务器之间的远程访问带来一些不便。然而&#xff0c;如今有一系列解决方案可迅速解决这一问题。 首选&#xff0c;充分利用CDN加速&#xff0…

智慧公厕:利用物联网、云计算和人工智能实现智能化管理与控制

智慧公厕是指利用传感感知、物联网、互联网、大数据、云计算、自动化控制等先进技术&#xff0c;实现对公厕的智能化管理与控制。通过以上高精尖的信息技术手段&#xff0c;可以实时监测厕所内人体活动状态、人体存在状态、空气质量情况、环境变化情况、设施设备运行状态等信息…

JVM对象创建与内存分配机制剖析

欢迎大家关注我的微信公众号&#xff1a; 传送门&#xff1a;JVM内存模型深度剖析与优化 目录 对象的创建 对象大小与指针压缩 对象内存分配 对象内存回收 对象的创建 对象创建的主要流程: 1.类加载检查 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的…

Java后端sql编写

Java后端sql编写 注意事项二级目录三级目录 注意事项 在后端编写sql&#xff0c;不要直接编写sql语句进行查询 比如直接在service实现类中写下图这种语句 二级目录 三级目录

Resize:最近邻插值、双线性插值、双三次插值

Resize&#xff1a;最近邻插值、双线性插值、双三次插值 Opencv resize函数1. 最近邻插值&#xff08;INTER_NEAREST&#xff09;1.1 原理1.2 代码实例1.3 简单的代码复现1.4 特点 2. 双线性插值&#xff08;INTER_LINEAR&#xff09;&#xff08;默认值&#xff09;2.1 原理2.…

分布式限流要注意的问题

本文已收录至我的个人网站&#xff1a;程序员波特&#xff0c;主要记录Java相关技术系列教程&#xff0c;共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源&#xff0c;让想要学习的你&#xff0c;不再迷茫。 为什么需要匀速限流 同学们回想一下在Guava小节里…

在java中为什么重写equals要重写hashcode

为什么重写equals要重写hashcode 在Java中&#xff0c;当我们重写equals方法时&#xff0c;通常也需要重写hashCode方法。这是因为&#xff1a; 一致性&#xff1a;如果两个对象相等&#xff08;即equals方法返回true&#xff09;&#xff0c;那么它们的哈希码&#xff08;has…

Oracle AWR报告的生成和解读

Oracle AWR报告的生成和解读 一、AWR报告概念及原理 Oracle10g以后&#xff0c;Oracle提供了一个性能检测的工具&#xff1a;AWR&#xff08;Automatic Workload Repository 自动工作负载库&#xff09;这个工具可以自动采集Oracle运行中的负载信息&#xff0c;并生成与性能相…

Python 网络编程之TCP详细讲解

【一】传输层 【1】概念 传输层是OSI五层模型中的第四层&#xff0c;负责在网络中的两个端系统之间提供数据传输服务主要协议包括**TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;** 【2】功能 **端到端通信&#xff1a;**传输层负责…

【点云、图像】学习中 常见的数学知识及其中的关系与python实操[更新中]

文章目录 前言一、平均值、方差、协方差平均值&#xff08;mean&#xff09;np.mean()方差&#xff08;variance&#xff09;np.var()总体方差 np.var(a, ddof0)无偏样本方差np.var(a, ddof1)有偏样本方差标准差&#xff08;standard deviation&#xff09;np.std(a, ddof1)默认…

【原创】docker +宝塔+安装zabbix

Zabbix: Zabbix可以监控各种网络服务、服务器和网络设备&#xff0c;而无需在目标设备上安装客户端。它的强大之处在于自带的Web界面&#xff0c;能够提供实时监控和各种报警功能。方法1&#xff1a; 步骤 创建Docker Compose文件: 首先&#xff0c;你需要创建一个docker-comp…

Elasticsearch Windows部署-ELK技术栈

1、下载Elasticsearch、kibana、logstash 本文不介绍ELK相关原理知识&#xff0c;只记录部署操作过程 下载地址Past Releases of Elastic Stack Software | Elastic 选择同一版本&#xff0c;这里选择是当前最新版本8.11.3 解压放在同目录下&#xff0c;方便后续操作与使用 …