文章目录

  • 详细说明
    • 子窗口处理
  • 公共类型
    • enum SubWindowOption
  • 属性
  • 公共函数
    • 构造和析构
    • 属性相关
    • 其它
  • 重写的公共函数
  • 公共槽
  • 信号
  • 重写的受保护的函数

QMdiSubWindow Class

QMdiSubWindow 类为QMdiArea提供了一个子窗口类。

Header #include < QMdiSubWindow >
qmake QT += widgets
Inherits QWidget
Inherited By

详细说明

QMdiSubWindow表示QMdiArea中的顶级窗口,它由带有窗口装饰的标题栏、内部小部件以及(取决于当前样式)窗口框架和大小夹点组成。QMdiSubWindow 有自己的布局,它由标题栏和内部小部件的中心区域组成。

构造QMdiSubWindow最常用的方法是使用内部小部件作为参数调用QMdiArea::addSubWindow() 。您还可以自己创建一个子窗口,并通过调用setWidget() 来设置内部小部件。

使用子窗口编程时使用的API与使用常规顶级窗口编程时使用的API相同(例如,可以调用show() 、hide() 、showmimized() 和 setWindowTitle() 等函数)。

子窗口处理

QMdiSubWindow还支持MDI区域中特定于子窗口的行为。

默认情况下,在MDI区域视口中移动时,每个QMB窗口都是可见的,但也可以指定透明窗口移动和调整大小行为,在这些操作期间,仅更新子窗口的轮廓。setOption() 函数用于启用此行为。

函数isShaded() 的作用是:检测子窗口当前是否有阴影(也就是说,窗口被折叠,只有标题栏可见)。要进入着色模式,请调用showShaded() 。每当窗口状态发生更改时(例如,当窗口最小化或恢复时),QMdiSubWindow就会发出windowStateChanged() 信号。它在被激活之前也会发出aboutToActivate() 。

在键盘交互模式下,窗口随键盘移动和调整大小。您可以通过窗口的系统菜单进入此模式。keyboardSingleStep和keyboardPageStep属性控制小部件为每个按键事件移动或调整大小的距离。当按下shift键时,使用页步;否则使用单步。

也可以用键盘更改活动窗口。同时按下control和tab键,将激活下一个(使用当前WindowOrder)子窗口。通过按control、shift和tab,您将激活上一个窗口。这相当于调用activateNextSubWindow() 和activatePreviousSubWindow() 。请注意,这些快捷方式覆盖全局快捷方式,但不覆盖QMdiAreas快捷方式。

公共类型

enum SubWindowOption

flags SubWindowOptions

此枚举描述自定义 QMdiSubWindow 行为的选项。

Constant Value Description
RubberBandResize 0x4 如果启用此选项,将使用橡皮筋控件来表示子窗口的轮廓,并且用户将调整其大小,而不是子窗口本身。因此,子窗口将保持其原始位置和大小,直到调整大小操作完成,此时它将收到一个QResizeEvent。默认情况下,此选项处于禁用状态。
RubberBandMove 0x8 如果启用此选项,将使用橡皮筋控件来表示子窗口的轮廓,用户将移动此控件而不是子窗口本身。因此,子窗口将保持在其原始位置,直到移动操作完成,此时会向窗口发送QMoveEvent。默认情况下,此选项处于禁用状态。

属性

  1. keyboardPageStep: int 使用键盘页键时小部件应移动或调整大小的距离

    在键盘交互模式下,可以使用箭头键和页键移动或调整窗口大小。此属性控制页键。进入键盘交互模式的常用方法是进入子窗口菜单,然后选择“resize”或“move”。
    默认的键盘页步长值为20像素。

    • int keyboardPageStep() const
    • void setKeyboardPageStep(int step)
  2. keyboardSingleStep: int 使用键盘箭头键时小部件应移动或调整大小的距离

    在键盘交互模式下,可以使用箭头键和页键移动或调整窗口大小。此属性控制箭头键。进入键盘交互模式的常用方法是进入子窗口菜单,然后选择“resize”或“move”。
    默认的键盘单步值为5像素。

    • int keyboardSingleStep() const
    • void setKeyboardSingleStep(int step)

公共函数

构造和析构

  • QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

    构造一个新的QMdiSubWindow小部件。parent和flags参数被传递给QWidget的构造函数。

    当您将子窗口添加到QMdiArea时,也可以使用setParent(),而不是使用addSubWindow()。

    注意,只有QMdiSubWindows可以设置为QMdiArea的子节点;例如,你不能这样写:

     //bad codeQMdiArea mdiArea;QTextEdit editor(&mdiArea); // invalid child widget
    
  • virtual ~QMdiSubWindow()

属性相关

  • int keyboardPageStep() const
  • void setKeyboardPageStep(int step)
  • int keyboardSingleStep() const
  • void setKeyboardSingleStep(int step)

其它

  • bool isShaded() const

  • QMdiArea * mdiArea() const

  • QMenu * systemMenu() const
    void setSystemMenu(QMenu *systemMenu) 设置systemMenu为该子窗口的当前系统菜单

    默认情况下,每个QMdiSubWindow都有一个标准的系统菜单。
    QMdiSubWindow创建的系统菜单的QActions将根据当前窗口状态自动更新;例如,窗口被最小化后,最小化操作将被禁用。
    QMdiSubWindow不会更新用户添加的QAction。
    QMdiSubWindow获得systemMenu的所有权;你不需要删除它。所有现有的菜单将被删除。

  • bool testOption(QMdiSubWindow::SubWindowOption option) const
    void setOption(QMdiSubWindow::SubWindowOption option, bool on = true)

  • QWidget * widget() const
    void setWidget(QWidget *widget) 将小部件设置为子窗口的内部小部件

    内部小部件显示在标题栏下面的子窗口的中央。QMdiSubWindow获得widget的临时所有权;你不需要删除它。任何现有的内部小部件都将被删除,并重新指向根窗口。

重写的公共函数

  • virtual QSize minimumSizeHint() const override
  • virtual QSize sizeHint() const override

公共槽

  • void showShaded()
  • void showSystemMenu()

信号

  • void aboutToActivate()
  • void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)

重写的受保护的函数

  • virtual void changeEvent(QEvent *changeEvent) override
  • virtual void childEvent(QChildEvent *childEvent) override
  • virtual void closeEvent(QCloseEvent *closeEvent) override
  • virtual void contextMenuEvent(QContextMenuEvent *contextMenuEvent) override
  • virtual bool event(QEvent *event) override
  • virtual bool eventFilter(QObject *object, QEvent *event) override
  • virtual void focusInEvent(QFocusEvent *focusInEvent) override
  • virtual void focusOutEvent(QFocusEvent *focusOutEvent) override
  • virtual void hideEvent(QHideEvent *hideEvent) override
  • virtual void keyPressEvent(QKeyEvent *keyEvent) override
  • virtual void leaveEvent(QEvent *leaveEvent) override
  • virtual void mouseDoubleClickEvent(QMouseEvent *mouseEvent) override
  • virtual void mouseMoveEvent(QMouseEvent *mouseEvent) override
  • virtual void mousePressEvent(QMouseEvent *mouseEvent) override
  • virtual void mouseReleaseEvent(QMouseEvent *mouseEvent) override
  • virtual void moveEvent(QMoveEvent *moveEvent) override
  • virtual void paintEvent(QPaintEvent *paintEvent) override
  • virtual void resizeEvent(QResizeEvent *resizeEvent) override
  • virtual void showEvent(QShowEvent *showEvent) override
  • virtual void timerEvent(QTimerEvent *timerEvent) override

主窗口(08):【类】QMdiSubWindow [官翻]相关推荐

  1. QSettings 类【官翻】

    文章目录 详述 基本用法 QVariant和GUI类型 Section 和 Key 的语法 后备机制 恢复GUI应用程序的状态 同时从多个线程或进程访问设置 特定于平台的说明 应用程序设置的存储位置 ...

  2. Qt 线程(02):线程类【官翻】

    线程类 类名 简介 Concurrent Filter and Filter-Reduce Concurrent Map and Map-Reduce Concurrent Run QAtomicIn ...

  3. QFileInfo 类【官翻】

    文章目录 详述 性能问题 公共函数 创建及析构 目录 路径.文件名及后缀 时间信息 缓存 属性 类型 访问权限 比较 静态公用函数 相关的非成员 QFileInfo 类 QFileInfo类提供与系统 ...

  4. QFileDevice 类【官翻】

    文章目录 一.详述 二.公共类型 三.公共函数 四.重新实现的公共函数 五.重新实现受保护的函数 QFileDevice 类 QFileDevice类提供用于读取和写入打开文件的接口. Header: ...

  5. QStorageInfo 类【官翻】

    文章目录 详述 公共函数 静态公共函数 相关非成员 QStorageInfo 类 提供有关当前安装的存储和驱动器的信息. Header: #include < QStorageInfo > ...

  6. QFile 类【官翻】

    文章目录 详述 直接读取文件 使用流读取文件 信号 平台特定问题 公共类型 公共函数 重新实现的公共函数 静态公用函数 QFile 类 QFile类提供用于读取和写入文件的接口. Header: #i ...

  7. 在主窗口中增加绘图类控件时(以QPainter为例)时不显示内容的问题(不应该加addStretch)

    问题引出 假如我要实现以下GUI,包含一个主窗口,主窗口内又包含1个绘图类控件(QPainter中的QdrawText)和1个 单行文本框控件(QLineEdit). 期望效果图 开始实现的代码为: ...

  8. Qt应用程序主窗口之一:主窗口框架

    对于日常见到的应用程序而言,许多都是基于主窗口的,主窗口中包含了菜单栏.工具栏.状态栏和中心区域等.这一章会详细介绍主窗口的每一个部分,还会涉及资源管理.富文本处理.拖放操作和文档打印等相关内容.重点 ...

  9. Qt应用程序主窗口框架

    Qt 应用程序主窗口框架 1. Qt资源系统.菜单栏和工具栏 1.1 使用资源 1.2 编写代码方式添加菜单 1.3 菜单栏 1.4 工具栏 2. 中心部件 3. Dock部件 4. 状态栏 5. 例 ...

最新文章

  1. linux怎么配置mysql数据库服务器_linux下指定mysql数据库服务器主从同步的配置实例...
  2. (一:NIO系列)JAVA NIO 简介
  3. 【解决方案】无法将grub-efi-amd64-signed软件包安装到/target/【安装Ubuntu】
  4. apache arm 交叉编译_arm apache php交叉编译
  5. Boost:使用max_element()算法以及transform_iterator和length()函数来查找最长的 向量数组中的4分量向量
  6. 三级嵌入式 汇编指令汇总
  7. linux没有那个文件或目录_Linux安装python faiss模块
  8. python理论知识选择题_python基础知识练习题(二)
  9. (原创)如何进行有符号小数乘法运算?(Verilog)
  10. java怎么看具体被挂起的线程_Java知多少(65)线程的挂起、恢复和终止
  11. Intellij IDEA 中的 Debug 控制台输出窗口消失
  12. 四、BDB JE学习(对java中内置对象的存储)
  13. 突破百度知道瓶颈,问淘宝引流
  14. 【单片机课程合集】摩尔吧魔鬼集训营,单片机尽情学!
  15. Echart资源网站
  16. 机器学习模型的部署上线方式
  17. 微信播放在服务器视频无法播放,微信收藏的视频不能播放怎么办?怎么收藏视频?...
  18. 在线时钟html5,HTML5应用之时钟
  19. Word创建层级目录
  20. QT6程序全屏和隐藏鼠标指针笔记

热门文章

  1. Error (171173): Node xxxx from partition Top cannot preserve previous placement at PIN D16 and honor
  2. eclipse本来运行的汉字运行出来变成特殊符号或者乱码的解决方法
  3. Python 语言中有关复数的几个概念
  4. 阿里云服务器实例忘记用户名密码
  5. 【计算几何】atan2函数
  6. Linux如何用命令创建文件和文件夹
  7. 我的世界自制mod{1}
  8. 广东计算机考试只能在学校报名吗,广东省计算机等级考试报名考点名单
  9. Linux命令行下的文本编辑器
  10. Python-FiPy有限体积安装