【Qt控件之QMdiArea】介绍及使用

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

描述

QMdiArea小部件提供了一个区域,用于显示MDI窗口。QMdiArea的功能类似于MDI窗口的窗口管理器。例如,它在自身上绘制和排列管理的窗口,可以按级联或平铺模式排列它们。通常,QMdiArea被用作QMainWindow的中心小部件,用于创建MDI应用程序,但也可以放置在任何布局中。下面的代码向主窗口添加了一个MDI区域:

QMainWindow *mainWindow = new QMainWindow;
mainWindow->setCentralWidget(mdiArea);

与顶级窗口的窗口管理器不同,QMdiArea支持所有窗口标志(Qt::WindowFlags),只要这些标志被当前小部件样式支持。如果某个特定的标志在样式中不受支持(如WindowShadeButtonHint),您仍然可以使用showShaded()来收起窗口。

以上这段话理解就是:
QMdiArea(一个Qt库中的类,用于创建多文档界面(MDI)应用程序的主窗口区域)支持所有的窗口标志(Qt::WindowFlags),但是这些标志是否能被正确使用还取决于当前窗口部件(Widget)的样式是否支持这些标志。有些窗口标志可能在某些样式中不被支持,比如“WindowShadeButtonHint”。

“WindowShadeButtonHint”这个窗口标志是用来表示窗口是否有一个按钮可以用来控制窗口的阴影效果的。但是,如果这个标志在当前使用的样式中不被支持,也就是说,即使你设置了这个标志,你可能也看不到相应的阴影按钮。

然而,尽管这个标志在样式中不受支持,你仍然可以使用showShaded()函数来收起(或展开)窗口。也就是说,尽管你可能看不到阴影按钮,但是你仍然可以通过代码来控制窗口的阴影效果。

总的来说,这句话是在说明QMdiArea的窗口标志支持和样式的关系,以及当某些标志不被样式支持时的处理方式。

QMdiArea中,子窗口是QMdiSubWindow的实例。可以使用addSubWindow()将它们添加到MDI区域中。通常,会将一个QWidget作为内部小部件传递给此函数,但也可以直接传递一个QMdiSubWindow。此类继承自QWidget,您可以像处理普通顶级窗口一样使用相同的API进行编程。QMdiSubWindow还具有特定于MDI窗口的行为。有关更多详细信息,请参阅QMdiSubWindow类描述。

当子窗口获得键盘焦点或调用setFocus()时,它将变为活动窗口。用户可以通过通常的方法来激活窗口。当活动窗口更改时,MDI区域会发出subWindowActivated()信号,activeSubWindow()函数返回活动子窗口。

方便的函数subWindowList()返回所有子窗口的列表。例如,这些信息可以用于弹出菜单中包含窗口列表的情况。

子窗口按当前的窗口顺序进行排序。这用于subWindowList()以及activateNextSubWindow()activatePreviousSubWindow(),也用于使用cascadeSubWindows()tileSubWindows()级联或平铺窗口的情况。

QMdiArea提供了两种内置的子窗口布局策略:cascadeSubWindows()tileSubWindows()。它们都是槽函数,并且可以轻松地连接到菜单项。
【Qt控件之QMdiArea】介绍及使用,Qt编程,Qt记录,qt,服务器,开发语言

常用函数

以下是QMdiArea的常用函数、信号和槽的介绍:

成员函数
  • addSubWindow(QWidget *widget, Qt::WindowFlags flags = Qt::EmptyFlag):将一个QWidget添加为子窗口,并返回对应的QMdiSubWindow实例。
  • removeSubWindow(QWidget *widget):从MDI区域中移除指定的子窗口。
  • setActiveSubWindow(QMdiSubWindow *window):将指定的QMdiSubWindow设置为活动窗口。
  • cascadeSubWindows():级联排列所有子窗口。
  • tileSubWindows():平铺排列所有子窗口。
  • subWindowList():返回包含所有子窗口的列表。
  • activeSubWindow():返回当前活动的子窗口。
信号
  • subWindowActivated(QMdiSubWindow *window):当活动窗口发生变化时触发该信号,参数为当前活动的子窗口。
  • subWindowActivated(QWidget *window):重载版本的subWindowActivated信号,参数为当前活动的子窗口的内部小部件。
  • subWindowAboutToActivate(QMdiSubWindow *window):在即将激活子窗口之前触发该信号,参数为即将激活的子窗口。
  • subWindowAboutToActivate(QWidget *window):重载版本的subWindowAboutToActivate信号,参数为即将激活的子窗口的内部小部件。
  • cascadeSubWindows():槽函数,用于级联排列所有子窗口。
  • tileSubWindows():槽函数,用于平铺排列所有子窗口。
  • activateNextSubWindow():槽函数,激活下一个子窗口。
  • activatePreviousSubWindow():槽函数,激活上一个子窗口。

除了上述函数、信号和槽之外,QMdiArea还具有一些其他函数用于设置和查询MDI区域的属性,例如设置背景颜色、设置视图模式、获取焦点子窗口等。可以参考Qt官方文档中的QMdiArea类文档以获取更详细的信息和完整的函数、信号和槽列表。

示例

以下示例,实现使用QMdiArea实现添加子窗口、删除子窗口、设置背景样式和平铺子窗口等功能:

#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMainWindow mainWindow;

    QMdiArea mdiArea;
    mainWindow.setCentralWidget(&mdiArea);

    // 设置背景样式
    mdiArea.setStyleSheet("background-color: #e9e9e9;");

    // 添加子窗口
    QWidget *subWindow1 = new QWidget;
    subWindow1->setWindowTitle("SubWindow 1");
    QLabel *label1 = new QLabel("This is SubWindow 1");
    label1->setAlignment(Qt::AlignCenter);
    QVBoxLayout *layout1 = new QVBoxLayout(subWindow1);
    layout1->addWidget(label1);
    mdiArea.addSubWindow(subWindow1);

    QWidget *subWindow2 = new QWidget;
    subWindow2->setWindowTitle("SubWindow 2");
    QLabel *label2 = new QLabel("This is SubWindow 2");
    label2->setAlignment(Qt::AlignCenter);
    QVBoxLayout *layout2 = new QVBoxLayout(subWindow2);
    layout2->addWidget(label2);
    mdiArea.addSubWindow(subWindow2);

    // 显示主窗口和子窗口
    mainWindow.show();

    // 平铺子窗口
    mdiArea.tileSubWindows();

    // 删除子窗口
    mdiArea.removeSubWindow(subWindow1);

    return app.exec();
}

【Qt控件之QMdiArea】介绍及使用,Qt编程,Qt记录,qt,服务器,开发语言

在示例中,使用QMdiArea来创建一个MDI区域,并将其设置为主窗口的中心小部件。通过设置QMdiArea的样式表来定制背景样式。然后,使用QWidget来创建两个子窗口,并将它们添加到MDI区域中使用addSubWindow()函数。最后,调用tileSubWindows()函数来平铺子窗口,并在需要时使用removeSubWindow()函数来删除子窗口。文章来源地址https://www.toymoban.com/news/detail-722251.html

到了这里,关于【Qt控件之QMdiArea】介绍及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Qt编程基础 | 第三章-控件 | 3.3、对话框

    对话框:在主窗口中操作,有可能触发某一个行为动作,会弹出一个新的对话窗口,解决一个临时性的会话,在对话窗口中执行某一个功能。QDialog可以作为自定义对话框的基类,同时Qt也提供了一些标准对话框,例如:QFileDialog、QColorDialog等,下面是QDialog类的继承结构,如下

    2024年02月06日
    浏览(52)
  • Qt Designer 控件箱中的控件介绍及布局比列分配

    控件箱介绍                 Qt Designer的控件箱(Widget Box)包含了各种常用的控件,用户可以通过拖放的方式将这些控件添加到窗体设计器中,用于构建用户界面。以下是一些常见控件箱中的控件及其功能的讲解: 1. 基本控件 : 标签(Label) :用于显示文本或图像。

    2024年04月13日
    浏览(32)
  • 开源Qt Ribbon控件——SARibbon的布局思路及介绍

    原文链接:https://blog.csdn.net/czyt1988/article/details/113811620 https://devpress.csdn.net/gitcode/6412b1fe986c660f3cf9294a.html?spm=1001.2101.3001.6650.4utm_medium=distribute.pc_relevant.none-task-blog-2 default CTRLIST activity-4-108312948-blog-126431338.235^v31^pc_relevant_default_base3depth_1-utm_source=distribute.pc_relevant.none-task-blog-2 defa

    2024年01月25日
    浏览(31)
  • QT Creator上位机学习(三)QString及其相关控件介绍

    QSting类,用于处理字符串,进行字符串和数字之间的转化 转换函数: 1.数字转字符串 其中setNum() 函数和number()函数使用了多个重载定义,可以处理各种类型的整数和浮点数,处理整数的时候还可以指定进制。 例如:数据转化为指定进制的字符串 2.字符串转数字 转换为整数:

    2024年02月11日
    浏览(31)
  • 【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明

    博客主页:Duck Bro 博客主页 系列专栏:Qt 专栏 关注博主,后期持续更新系列文章 如果有错误感谢请大家批评指出,及时修改 感谢大家点赞👍收藏⭐评论✍ 文章编号:Qt 学习笔记 / 29 1. 简介 QTextEdit是Qt中的一个可编辑的文本框控件,可以用于显示和编辑多行文本。 它是基于

    2024年04月28日
    浏览(39)
  • QT:自定义控件(Connect使用,子控件连接)

    1.举例:主页面为mainwindow,设置的子控件为Form 2.主界面 3.子控件中需要实现:QSpinBox移动 QSlider跟着移动,QSlider移动 QSpinBox数字跟着改变 还需要实现,在主界面中读取和设置子控件的数值: 子控件添加接口: 主界面通过按钮调用接口:

    2024年02月13日
    浏览(28)
  • QT QToolBox控件使用详解

            本文详细的介绍了QToolBox控件的各种操作,例如:新建界面、添加页签、索引设置当前项、获取当前项的索引、获取当前项窗口、获取索引值是int的窗口、移除索引值项、获取项的数量、获取指定索引值、设置索引项是否激活、获取索引值项是否激活、设置项的图

    2024年02月09日
    浏览(28)
  • QT QTabWidget 控件 使用详解

           本文详细的介绍了QTabWidget控件的各种操作,例如:新建界面、设置页面名字、设置提示信息、设置页面激活、设置标题栏位置、设置页面关闭按钮、设置页面关闭按钮、获取页面下标、获取页面总数、清空所有页面、删除某个页面、设置拖拽移动、设置显示页面、

    2024年02月03日
    浏览(33)
  • QT QCalendarWidget控件 使用详解

            本文详细的介绍了QCalendarWidget控件的各种操作,例如:设置日历的文本格式、设置日历的大小、日历移动、日历隐藏显示、设置日历时间最大值、设置日历时间最小值、单击信号槽、日历改变信号槽、双击鼠标信号槽等操作。         本系列QT全面详解文章目前

    2024年02月16日
    浏览(31)
  • QT QLabel控件(使用详解)

            本文详细的介绍了TextLabel控件的各种操作,例如:显示边框、设置文字、设置字体、设置信息提示框、状态提示、居中对齐、加载图片、自适应图片大小、设置位置大小、样式表等操作。 本文作者原创,转载请附上文章出处与本文链接。 QLabel控件(使用详解)目录

    2024年02月15日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包