iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++的Qt MdiArea多窗体组件怎么使用
  • 133
分享到

C++的Qt MdiArea多窗体组件怎么使用

2023-06-21 22:06:39 133人浏览 薄情痞子
摘要

本篇内容主要讲解“c++的Qt MdiArea多窗体组件怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的Qt MdiArea多窗体组件怎么使用”吧!MDI窗体控

本篇内容主要讲解“c++Qt MdiArea多窗体组件怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的Qt MdiArea多窗体组件怎么使用”吧!

MDI窗体控件类似于画布,该控件只具备展示窗体的功能,无法实现生成窗体,所以我们需要在项目中手动增加自定义的Dialog对话框,并对该对话框进行一定的定制。

C++的Qt MdiArea多窗体组件怎么使用

这个Dialog对话框我们只增加两个功能,一个Dialog::currentFileName()获取窗体标题,另一个Dialog::SetData(QString data)设置数据到编辑框,代码实现如下.

#include "dialog.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog){    ui->setupUi(this);    this->setWindowTitle("New Doc <By: LyShark >");           // 窗口标题    this->setAttribute(Qt::WA_DeleteOnClose);  // 关闭时自动删除    this->setFixedSize(200,100);               // 设置窗体大小    // this->setWindowIcon(QIcon(":/image/1.ico"));}Dialog::~Dialog(){    delete ui;}// 获取窗体标题// By: LySharkQString Dialog::currentFileName(){    QString title = this->windowTitle();    return title;}// 设置编辑框内容// https://www.cnblogs.com/lysharkvoid Dialog::SetData(QString data){    ui->lineEdit->setText(data);}

接着我们开始绘制这个程序的主界面,在toolBar中增加相应的菜单栏,并在主窗体中放入mdiArea容器组件。

C++的Qt MdiArea多窗体组件怎么使用

窗体中的顶部菜单栏,我们需要手动定义一下他们所具备的功能名称等。

C++的Qt MdiArea多窗体组件怎么使用

当程序启动后,程序调用MainWindow初始化这个窗体,初始化代码如下:

#include "mainwindow.h"#include "ui_mainwindow.h"#include "dialog.h"#include <iOStream>#include <QCloseEvent>// 如果直接关闭,则清空所有对话框// Https://www.cnblogs.com/lysharkvoid MainWindow::closeEvent(QCloseEvent *event){    ui->mdiArea->closeAllSubwindows();    event->accept();}// By: LySharkMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    this->setCentralWidget(ui->mdiArea);    //this->setWindowState(Qt::WindowMaximized); //窗口最大化显示    ui->mainToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);    ui->mdiArea->setViewMode(QMdiArea::SubWindowView); //子窗口模式}MainWindow::~MainWindow(){    delete ui;}

代码运行效果如下:

C++的Qt MdiArea多窗体组件怎么使用

用户新建窗体执行MainWindow::on_actionOpen_triggered()事件,关闭窗体时则执行MainWindow::on_actionClose_triggered()事件。

// 新建窗体void MainWindow::on_actionOpen_triggered(){    Dialog *fORMDoc = new Dialog(this); //    ui->mdiArea->addSubWindow(formDoc); //文档窗口添加到MDI    formDoc->show(); //在单独的窗口中显示}// 关闭全部void MainWindow::on_actionClose_triggered(){    ui->mdiArea->closeAllSubWindows(); //关闭所有子窗口}

代码运行效果如下:

C++的Qt MdiArea多窗体组件怎么使用

当用户点击MDI模式时,我们则执行以下代码,将所有已存在的窗体合并为一个类似于TabWidget的窗体组件。

// 转为MID模式void MainWindow::on_actionMID_triggered(bool checked){    // Tab多页显示模式    if (checked)    {        ui->mdiArea->setViewMode(QMdiArea::TabbedView); // Tab多页显示模式        ui->mdiArea->setTabsClosable(true);             // 页面可关闭        ui->actionLine->setEnabled(false);        ui->actionTile->setEnabled(false);    }    // 子窗口模式    else    {        ui->mdiArea->setViewMode(QMdiArea::SubWindowView); // 子窗口模式        ui->actionLine->setEnabled(true);        ui->actionTile->setEnabled(true);    }}

代码运行效果如下:

C++的Qt MdiArea多窗体组件怎么使用

窗体级联模式则是将窗体并排排列在一起,我们只需要调用ui->mdiArea->cascadeSubWindows();方法即可实现.

// 级联模式void MainWindow::on_actionLine_triggered(){    ui->mdiArea->cascadeSubWindows();}

代码运行效果如下:

C++的Qt MdiArea多窗体组件怎么使用

平铺模式同样使用ui->mdiArea->tileSubWindows();即可实现转换。

// 平铺模式void MainWindow::on_actionTile_triggered(){    ui->mdiArea->tileSubWindows();}

代码运行效果如下:

C++的Qt MdiArea多窗体组件怎么使用

最后一个功能是主窗体发送数据到子窗体,该功能的实现需要两个函数。

  • on_mdiArea_subWindowActivated 实现设置主窗体名字到自身

  • on_actionSendMsg_triggered 实现主窗体发送消息到子窗体内

// 当子窗体打开时获取到其窗体标题// By: LySharkvoid MainWindow::on_mdiArea_subWindowActivated(QMdiSubWindow *arg1){    Q_UNUSED(arg1);    // 若子窗口个数为零,则将statusBar置空    if (ui->mdiArea->subWindowList().count()==0)    {        ui->statusBar->clearMessage();    }    else    {        // 如果不为0则显示主窗口的文件名        Dialog *formDoc=static_cast<Dialog*>(ui->mdiArea->activeSubWindow()->widget());        ui->statusBar->showMessage(formDoc->currentFileName());    }}// 对选中窗体发送数据// https://www.cnblogs.com/lysharkvoid MainWindow::on_actionSendMsg_triggered(){    // 先获取当前MDI子窗口    Dialog *formDoc;    // 如果打开则获取活动窗体    if (ui->mdiArea->subWindowList().count() > 0)    {        formDoc=(Dialog*)ui->mdiArea->activeSubWindow()->widget();        // 对活动窗体设置数据        formDoc->SetData("hello lyshark");    }}

代码运行效果如下:

C++的Qt MdiArea多窗体组件怎么使用

到此,相信大家对“C++的Qt MdiArea多窗体组件怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C++的Qt MdiArea多窗体组件怎么使用

本文链接: https://www.lsjlt.com/news/300983.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++的Qt MdiArea多窗体组件怎么使用
    本篇内容主要讲解“C++的Qt MdiArea多窗体组件怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的Qt MdiArea多窗体组件怎么使用”吧!MDI窗体控...
    99+
    2023-06-21
  • C/C++ Qt MdiArea 多窗体组件应用教程
    MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体的功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们...
    99+
    2024-04-02
  • C/C++ Qt QChart绘图组件的具体使用是怎么样的
    这篇文章给大家介绍C/C++ Qt QChart绘图组件的具体使用是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。QtCharts 组件是QT中提供图表绘制的模块,该模块可以方便的绘制常规图...
    99+
    2023-06-21
  • C/C++ Qt QThread线程组件的具体使用是怎样的
    这期内容当中小编将会给大家带来有关C/C++ Qt QThread线程组件的具体使用是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。QThread库是QT中提供的跨平台多线程实现...
    99+
    2023-06-21
  • C/C++ Qt ToolBar菜单组件的具体使用是怎样的
    C/C++ Qt ToolBar菜单组件的具体使用是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ToolBar工具栏在所有窗体应用程...
    99+
    2023-06-21
  • 怎么使用C/C++ QT的QChart绘制组件
    本篇内容主要讲解“怎么使用C/C++ QT的QChart绘制组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C/C++ QT的QChart绘制组件”吧!QtCharts 组件是QT中提...
    99+
    2023-06-25
  • C#的COM组件怎么开发界面窗体
    这篇文章主要讲解了“C#的COM组件怎么开发界面窗体”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#的COM组件怎么开发界面窗体”吧!C# COM组件开发1,定义接口(1)在接口上方加上[...
    99+
    2023-06-17
  • c#窗体文件怎么打开
    要打开 c# 窗体文件,可以使用 visual studio 或 dotpeek:使用 visual studio:从文件菜单中选择“打开”>“项目/解决方案”,定位并选择窗体文件...
    99+
    2024-05-11
    c#
  • C/C++中使用列表框组件Qt ListWidget
    ListWidget列表框组件,该组件与TreeWidget有些相似,区别在于TreeWidget可以实现嵌套以及多字段结构,而ListWidget组件则只能实现单字段结构,List...
    99+
    2024-04-02
  • C/C++ Qt StringListModel字符串列表映射组件怎么使用
    这篇文章主要介绍“C/C++ Qt StringListModel字符串列表映射组件怎么使用”,在日常操作中,相信很多人在C/C++ Qt StringListModel字符串列表映射组件怎么使用问题...
    99+
    2023-06-21
  • C/C++ Qt TreeWidget单层树形组件怎么应用
    本篇内容主要讲解“C/C++ Qt TreeWidget单层树形组件怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C/C++ Qt TreeWid...
    99+
    2023-06-21
  • C/C++QtQThread线程组件的具体使用
    QThread库是QT中提供的跨平台多线程实现方案,使用时需要继承QThread这个基类,并重写实现内部的Run方法,由于该库是基本库,默认依赖于QtCore.dll这个基础模块,在...
    99+
    2024-04-02
  • C/C++QtQChart绘图组件的具体使用
    QtCharts 组件是QT中提供图表绘制的模块,该模块可以方便的绘制常规图形,Qtcharts 组件基于GraphicsView模式实现,其核心是QChartView和QChart...
    99+
    2024-04-02
  • C/C++QtToolBar菜单组件的具体使用
    ToolBar工具栏在所有窗体应用程序中都广泛被使用,使用ToolBar可以很好的规范菜单功能分类,用户可根据菜单栏来选择不同的功能,Qt中默认自带ToolBar组件,当我们以默认方...
    99+
    2024-04-02
  • 怎么理解C#窗体关闭事件
    本篇内容介绍了“怎么理解C#窗体关闭事件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、第一步2、第二步名号命名好后,双击这个名字就可以对...
    99+
    2023-06-25
  • JavaGUI常用窗体组件与面板使用详解
    目录1.常用的窗体1.概述2.JFrame1.新建JFrame对象2.设置JFrame的大小3.设定JFrame3.JDialog2.常用的面板1.JPanel2.JScrollPa...
    99+
    2023-03-06
    JavaGUI窗体组件 JavaGUI面板组件
  • C#二维数组与多维数组的具体使用
    目录1、二维数组2、初始化二维数组3、访问二维数组种的元素C# 中同样支持多维数组(也可称为矩形数组),它可以是二维的,也可以是三维的,多维数组中的数据以类似表格(行、列)的形式存储...
    99+
    2023-05-15
    C#二维数组与多维数组 C#二维数组 C#多维数组
  • JavaScript窗体Window.ShowModalDialog怎么使用
    Window.ShowModalDialog是JavaScript的一个方法,它用于在模态对话框中显示一个新的窗体。通过模态对话框,...
    99+
    2024-03-05
    javascript
  • C++ Qt QColorDialog怎么使用
    这篇文章主要介绍“C++ Qt QColorDialog怎么使用”,在日常操作中,相信很多人在C++ Qt QColorDialog怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-06-26
  • C/C++ Qt TableDelegate 自定义代理组件使用详解
    TableDelegate 自定义代理组件的主要作用是对原有表格进行调整,例如默认情况下Table中的缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作