QT QMdiArea的介绍
QMdiArea 一般使用于主窗口QMainWindow,用于容纳多个子窗口QMdiSubWindow
qt creator 3.0的设计师有MdiArea可直接拖入使用。
界面如下,图中灰色框即是个MdiArea,另一图中创建了2个QMdiSubWindow :
代码如下:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QSize> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->actionNew,SIGNAL(triggered()),this,SLOT(creatNewWin()));//actionNew是通过设计师创建的动作 } void MainWindow::creatNewWin() { mdiWin1=new QMdiSubWindow; mdiWin1->setWindowTitle("未定"); ui->mdiArea->addSubWindow(mdiWin1); mdiWin1->resize(QSize(200,200)); mdiWin1->show(); } MainWindow::~MainWindow() { delete ui; }
______________________________________________________________________________________________
QMdiArea
公有函数如下:
QMdiArea(QWidget * parent = 0) ~QMdiArea() QMdiSubWindow * addSubWindow(QWidget * widget, Qt::WindowFlags windowFlags = 0) void removeSubWindow(QWidget * widget) void setActivationOrder(WindowOrder order)//设置激活顺序,默认以创建先后激活,槽函数中有调用,枚举值见1 void setBackground(const QBrush & background)//设置背景,默认灰色 void setDocumentMode(bool enabled) void setOption(AreaOption option, bool on = true)//现只有一个选项,即创建子窗口,窗口不充满这个区域,默认是充满的,枚举值见2 void setViewMode(ViewMode mode)//设置视口模式,默认area中很多小窗口,也可以是有tabBar形式的,以下这些设置tab的函数,都需要先开启这个。枚举值见3 void setTabPosition(QTabWidget::TabPosition position)//设置tabBar的方位,有东西南北四方位,遵循地理的上北下南左西右东枚举值见4 void setTabShape(QTabWidget::TabShape shape)//设置tab的形状,默认长方形,也可以像谷歌浏览器那样,梯形,枚举值见5 void setTabsClosable(bool closable)//默认否,设为true时,tab上方形成一个关闭小按钮 void setTabsMovable(bool movable)//设置是否可移动,默认false,可移动时,可拖动tab在tabBar上移动,现在的浏览器大多有这样的功能 QList<QMdiSubWindow *> subWindowList(WindowOrder order = CreationOrder) const QMdiSubWindow * currentSubWindow() const WindowOrder activationOrder() const QBrush background() const bool documentMode() const bool testOption(AreaOption option) const QMdiSubWindow * activeSubWindow() const QTabWidget::TabPosition tabPosition() const QTabWidget::TabShape tabShape() const bool tabsClosable() const bool tabsMovable() const ViewMode viewMode() const
Public Slots
void activateNextSubWindow() void activatePreviousSubWindow() void cascadeSubWindows() void closeActiveSubWindow() void closeAllSubWindows() void setActiveSubWindow(QMdiSubWindow * window) void tileSubWindows()//将所有子窗口在area的可视部分排列整齐
Signals
void subWindowActivated(QMdiSubWindow * window)//切换激活的窗口时发出
1,enum QMdiArea::WindowOrder
Constant | Value | Description |
---|---|---|
QMdiArea::CreationOrder | 0 | 按创建时的先后顺序 |
QMdiArea::StackingOrder | 1 | 堆叠顺序 |
QMdiArea::ActivationHistoryOrder | 2 | 按激活历史前后顺序. |
2,enum QMdiArea::AreaOption
flags QMdiArea::AreaOptions
Constant | Value | Description |
---|---|---|
QMdiArea::DontMaximizeSubWindowOnActivation | 0x1 | 激活时不使它最大化,默认是最大化的 |
3,QMdiArea::ViewMode
Constant | Value | Description |
---|---|---|
QMdiArea::SubWindowView | 0 | 以小窗口形式显示(default). |
QMdiArea::TabbedView | 1 | 不仅可小窗口,而且形成tabBar |
4,enum QTabWidget::TabPosition
Constant | Value | Description |
---|---|---|
QTabWidget::North | 0 | 上方显示 |
QTabWidget::South | 1 | 下 |
QTabWidget::West | 2 | 左 |
QTabWidget::East | 3 | 右 |
5,enum QTabWidget::TabShape
Constant | Value | Description |
---|---|---|
QTabWidget::Rounded | 0 | 字面是圆形,但win7上更像长方形,default |
QTabWidget::Triangular | 1 | 字面三角形,说它是梯形更好些 |
在以上代码中修改,图中是执行tileSubWindows()函数后的结果:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QSize> #include <QTabWidget> #include <QBrush> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QBrush b=QBrush(QColor(30,30,30),Qt::FDiagPattern); ui->mdiArea->setBackground(b); ui->mdiArea->setViewMode(QMdiArea::TabbedView); ui->mdiArea->setTabPosition(QTabWidget::North); ui->mdiArea->setTabsClosable(true); ui->mdiArea->setTabsMovable(true); ui->mdiArea->setTabShape(QTabWidget::Triangular); ui->mdiArea->setOption(QMdiArea::DontMaximizeSubWindowOnActivation); connect(ui->actionNew,SIGNAL(triggered()),this,SLOT(creatNewWin())); } void MainWindow::creatNewWin() { mdiWin1=new QMdiSubWindow; mdiWin1->setWindowTitle("未定"); ui->mdiArea->addSubWindow(mdiWin1); mdiWin1->resize(QSize(200,200)); mdiWin1->show(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { ui->mdiArea->tileSubWindows(); }
______________________________________________________________________________________________
QMdiSubWindow
函数都比较简单,列出如下:
QMdiSubWindow(QWidget * parent = 0, Qt::WindowFlags flags = 0) ~QMdiSubWindow() void setKeyboardPageStep(int step) void setKeyboardSingleStep(int step) void setOption(SubWindowOption option, bool on = true)//未试效果,求补充,枚举值见1 void setSystemMenu(QMenu * systemMenu).se. void setWidget(QWidget * widget)//主要通过个函数添加它的小部件 int keyboardPageStep() const int keyboardSingleStep() const QMdiArea * mdiArea() const QMenu * systemMenu() const QWidget * widget() const bool testOption(SubWindowOption option) const bool isShaded() const
Public Slots
void | showShaded() |
void | showSystemMenu() |
Signals
void | aboutToActivate() |
void | windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState) |
1,enum QMdiSubWindow::SubWindowOption
Constant | Value | Description |
---|---|---|
QMdiSubWindow::RubberBandResize | 0x4 | If you enable this option, a rubber band control is used to represent the subwindow's outline, and the user resizes this instead of the subwindow itself. As a result, the subwindow maintains its original position and size until the resize operation has been completed, at which time it will receive a single QResizeEvent. By default, this option is disabled. |
QMdiSubWindow::RubberBandMove | 0x8 |
If you enable this option, a rubber band control is used to represent the subwindow's outline, and the user moves this instead of the subwindow itself. As a result, the subwindow remains in its original position until the move operation has completed, at which time aQMoveEvent is sent to the window. By default, this option is disabled. |
QT QMdiArea的介绍相关推荐
- Qt插件机制介绍及实现
Qt插件机制介绍及实现 创建应用程序主窗口 创建Qt项目 编辑项目文件ImageView.pro mainwindow.cpp main.cpp mainwindow.cpp 编译运行 插件接口 实现 ...
- Qt的简单介绍和安装
目录 Qt的介绍 Qt的优点 Qt的安装 Qt的介绍 Qt是一个跨平台的C++图形用户界面应用程序框架,它为应用程序开发者提供图形界面所需的所有功能. 它是完全面向对象的,很容易扩展,并且允许真正的组 ...
- Qt状态机框架介绍(二)
前言 上一篇博客中已经介绍了Qt状态机的基础概念和用法,文章在这里,接下来继续介绍Qt状态机的使用. 历史状态的保存和恢复 前一个示例中,我们通过一个按钮中断状态机,在此基础上,如果我们中断状态机过后 ...
- 【Qt教程】Qt常用部件介绍
这里先给大家介绍 Designer(界面设计器)中例举的常用部件,以便对 Qt 的部件有一定认识,其具体用法后面再作介绍. 布局管理组(Layouts) 空间间隔组(弹簧)(Spacers) 按钮组( ...
- Qt的简单介绍,发展和由来
一.Qt的介绍 1. Qt是图形用户界面程序框架,也可以称作Qt库,能做界面的还有MFC(只能在windows下使用),GTK+ 2. Qt的由来和发展 1. Qt的历史: Qt是1991年奇趣科技公 ...
- QT:QObject 简单介绍
QObject 是所有Qt对象的基类. QObject 是Qt模块的核心.它的最主要特征是关于对象间无缝通信的机制:信号与槽. 使用connect()建立信号到槽的连接,使用disconnect()销 ...
- qt禁止拖动_[Qt]QMdiArea,无框架窗口的拖动
0:QMdiArea中添加子窗口后,想固定or调整窗口的大小 需要在addSubWindow()函数调用后返回子窗口的指针,然后再设置子窗口的大小 注意设置imagelabel的大小是没有效果的,im ...
- Qt Quick 3D介绍:Qt Quick的高级3D API
目录 我们的目标是什么?为什么提出另一个3D解决方案? 统一图形技术 直观易用的API Qt Quick的统一工具 一流的素材优化管道 跨平台性能和兼容性 Qt Quick 3D到底是什么? 您能用Q ...
- Qt QMdiArea和QMdiSubWindow的基本用法
大多数复杂的程序,都使用MDI框架,在Qt designer中可以直接将控件MDI Area拖入使用. QMdiArea一般使用于主窗口中,用于容纳多个子窗口QMdiSubWindow 代码如下: m ...
最新文章
- R语言使用tidyquant包的tq_transmute函数计算持有某只股票的天、月、周收益率、ggplot2使用条形图(bar plot)可视化股票年收益率数据使用不同的色彩表征正收益率和负收益率
- OSI参考模型和网络编程
- h5页面禁止复制_网页禁止鼠标右键禁止全选复制粘贴的方法
- DijKstra算法普通+堆优化链式向前星
- 史上最全总结!爬虫常见加密解密算法
- python协程等待执行完成_当循环运行时,如何运行协同程序并等待同步函数的结果?...
- coderfoces D. Gourmet choice
- linux下iscsi
- 陌陌直播公益课复课 带乡村孩子“打卡”丝绸之路
- 注意判断js中使用正则表达式的转义字符,到底是对谁进行转义!!!
- mysql全局读写怎么锁_MySQL全局锁和表锁
- Javaweb 九大内置对象
- Accessibility辅助功能的使用
- Windows问题记录之任务栏图标透明
- Postgis使用工具raster2pgsql批量导入栅格数据(一)
- Vue3+elementplus搭建通用管理系统实例十五:界面美化及样式调整
- c++:从单例到内存屏障
- 小程序源码:炫酷恶趣制作神器-多玩法安装简单
- Canvas 实用API详解
- logback 配置总结
热门文章
- 阿里又孵出一只2000亿猛兽,马云当年的眼光太狠了
- fiddler的web端抓包配置流程
- 未能加载 mysql.data_连接MySQL 提示错误”未能加载文件或程序集“MySql.Data, Version=5.1.4.0, Culture=neutral,……..” | 学步园...
- 关于居住办公人口的统计技术解决方案
- 大学生综合测评系统(C++)
- E-office OA 任意文件下载漏洞复现
- springboot请求注解的使用Get/Post
- 关于音频情感分类的随笔(2)
- 基于51单片机的电梯控制器设计资料全套。
- python爬虫分析大学排名_Python爬虫之爬取中国大学排名(BeautifulSoup库)