《Qt开发》MDI应用程序

这篇具有很好参考价值的文章主要介绍了《Qt开发》MDI应用程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

运行效果图

初始布局(自定义布局)

《Qt开发》MDI应用程序,qt,开发语言

平铺布局

《Qt开发》MDI应用程序,qt,开发语言

多页模式

《Qt开发》MDI应用程序,qt,开发语言

实现过程

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);

}文章来源地址https://www.toymoban.com/news/detail-793643.html

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); //页面可关闭

}

到了这里,关于《Qt开发》MDI应用程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于SkyEye运行Qt:著名应用程序开发框架

    Qt是一个著名的跨平台的C++图形用户界面应用程序开发框架,目前包括Qt Creator、Qt Designer等等快速开发工具,还支持2D/3D图形渲染、OpenGL,允许真正的组件编程,是与GTK、MFC、OWL、ATL一样的图形界面库。使用Qt开发的软件可以做到一次开发、任意部署,相同的代码可以在任意支

    2024年04月22日
    浏览(37)
  • 16-4_Qt 5.9 C++开发指南_Qt 应用程序的发布

    用 Qt 开发一个应用程序后,将应用程序提供给用户在其他计算机上使用就是应用程序的发布。应用程序发布一般会提供一个安装程序,将应用程序的可执行文件及需要的运行库安装到用户计算机上,即使用户计算机上没有安装 Qt 也能正常运行安装的程序。 Qt的应用程序发布

    2024年02月14日
    浏览(40)
  • 14-5_Qt 5.9 C++开发指南_基于HTTP 协议的网络应用程序

    Qt 网络模块提供一些类实现 OSI 7 层网络模型中高层的网络协议,如 HTTP、FTP、SNMP等,这些类主要是 QNetworkRequest、QNetworkReply和QNetworkAccessManager。 QNetworkRequest 类通过一个URL 地址发起网络协议请求,也保存网络请求的信息,目前支持 HTTP、FTP 和局部文件 URLs的下载或上传。 QNe

    2024年02月13日
    浏览(37)
  • 06-3_Qt 5.9 C++开发指南_多窗体应用程序的设计(主要的窗体类及其用途;窗体类重要特性设置;多窗口应用程序设计)

    常用的窗体基类是QWidget、QDialog 和QMainWindow,在创建 GUI应用程序时选择窗体基类就是从这 3 个类中选择。QWidget 直接继承于 QObject,是 QDialog 和 QMainWindow 的父类,其他继承于 QWidget 的窗体类还有 QSplashScreen、QMdiSubWindow和QDesktopWidget。另外还有一个类QWindow,它同时从 QObject 和Q

    2024年02月13日
    浏览(72)
  • Qt 实现应用程序单实例

    目前使 Qt 运行一个实例有如下几种方式: 1.QSharedMemory 使用共享内存,当第二个进程启动时,判断内存区数据是否建立,如有,则退出;这种方式有弊端,在程序发生崩溃时,未及时清除共享区数据,导致程序不能正常启动。 2.文件锁 在程序运行的时候就在目录下创建一个文

    2024年02月10日
    浏览(34)
  • 【QT】多窗体应用程序设计

    目录 1主要的窗体类及其用途 2 窗体类重要特性的设置 2.1 setAttribute()函数 2.2 setWindowFlags()函数 2.3 setWindowState()函数 2.4 setWindowModality()函数 2.5 setWindowOpacity()函数 3 多窗口应用程序的设计 3.1 主窗口设计 3.2 QFormDoc类的设计 3.3 QFormDoc类的使用 3.4 QFormTable类的设计 3.5 QFormTable类的使

    2024年01月18日
    浏览(36)
  • Qt应用程序中的 QApplication

    QApplication类是一个Qt框架中核心的应用程序类,它提供了管理应用程序的框架、事件循环和系统级配置的基础。在本文中,我们将详细介绍QApplication类的功能和应用场景。 通常,我们在主函数中创建 QApplication 对象。在创建时,我们可以指定一些命令行选项和特定于平台的参

    2024年02月15日
    浏览(30)
  • 「Qt中文教程指南」如何创建基于Qt Widget的应用程序(四)

    Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文描述了如何使用Qt Creator创建一个小的Qt应用程序

    2024年02月06日
    浏览(45)
  • 【Qt】如何在Qt应用程序中使用设计好的UI文件

    本质上,Qt Designer的ui文件是一个以XML格式书写的文件,文件中内容描述了一个界面的widget关系树。这个文件在以下两种情况下会使用到: (1)在编译的时候,这意味着ui文件将被转换为可编译的c++代码,这个过程由 uic 完成。 (2)在应用程序运行的时候,ui文件将由 QUiLoa

    2024年01月16日
    浏览(36)
  • Qt Linux 环境中应用程序打包

    系统环境:Ubuntu20.04LTS 开发环境:Qt5.14.1 在进入程序部署打包之前,阅读官方的部署文档Deploy,通常情况下,我们在开发的时候,Qt Creator 的左下角构建模式为Debug,便于我们调试编写程序。Qt的三个构建模式Debug、Profile、Release的区别是: debug可以调试程序,而release不可以。在

    2024年02月01日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包