Qt Widgets——子区域和子窗口
QMdiArea 一般使用于主窗口QMainWindow,用于容纳多个子窗口QMdiSubWindow
qt creator 3.0的设计师有MdiArea可直接拖入使用。
#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(,));
mdiWin1->show();
}
MainWindow::~MainWindow()
{
delete ui;
}
______________________________________________________________________________________________
QMdiArea
QMdiArea(QWidget * parent = )
~QMdiArea() QMdiSubWindow * addSubWindow(QWidget * widget, Qt::WindowFlags windowFlags = )
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(,,),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(,));
mdiWin1->show();
}
MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::on_pushButton_clicked()
{
ui->mdiArea->tileSubWindows();
}
______________________________________________________________________________________________
QMdiSubWindow(QWidget * parent = , Qt::WindowFlags flags = )
~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() |
| 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 Widgets——子区域和子窗口的更多相关文章
- Qt Widgets——主窗口及其主要组成部分
Main Window and Related Classes QAction 动作类,用于当做一个菜单项或工具项插入菜单或工具栏 QActionGroup 动作组,用于管理多个动作,设置它们之间的互 ...
- 使用Python实现子区域数据分类统计
目录 前言 geopandas简介 子区域数据分类统计 总结 一.前言 最近碰到一个需求,需要统计某省内的所有市的某数据分布情况信息.现有该省的数据分布情况以及该省的行政区划数据.我通过 ...
- QT中关闭应用程序和窗口的函数(quit(),exit()以及close()的区别)
使用QT编辑界面,其中带来很大方便的一点就是Qt中自带丰富的.种类齐全的类及其功能函数,程序员可以在编辑程序的过程中简单地直接调用.关于窗口关闭的操作,在这里指出常用的三个槽,即quit(),exit ...
- c# 子线程打开子窗体
下边是在子线程打开子窗口,结果跑到else 里边了跨线程操作窗体控件InvokeRequired失效,无法用于打开子窗体,addonetwo.InvokeRequired,访问不了呢? 大神知道帮忙回 ...
- 公布Qt Widgets桌面应用程序的方法
公布Qt Widgets桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它能够在桌面.移动平台以及嵌入式平台上执行.眼下Qt 5介绍程序公布的文章帖子比較少.大家又很想要知道怎样公布Qt应用程序, ...
- CSS 实现:父元素包含子元素,子元素垂直居中布局
☊[实现要求]:父元素包含子元素,子元素垂直居中布局 <div class="demo5"> <div class="child">A& ...
- QT5中的pro文件中为何要加入"QT += widgets"
在pro文件里写"QT+=widgets"表示引入QtWidget这个module,qmake在生成makefile的时候,会设置好include path 和 lib path, ...
- 【QT相关】Qt Widgets Module
Qt Widgets Module:提供了一些列UI元素. 使用: //头文件包含 #include <QtWidgets> //链接模式,在.pro文件中添加行: QT += widge ...
- Sql Server的艺术(六) SQL 子查询,创建使用返回多行的子查询,子查询创建视图
子查询或内部查询或嵌套查询在另一个SQL查询的查询和嵌入式WHERE子句中. 子查询用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据. 子查询可以在SELECT,INSERT,UPDA ...
随机推荐
- Nginx教程---01.Nginx入门
create by 三七二十一 LZ参考视频(年代久远,但万变不离其宗): 链接:https://pan.baidu.com/s/1O_MmN0c3ckM6vbk08n8Qkg 密码:z9zr 01_ ...
- spring boot配置druid数据源和监控配置
直接上代码: 一.pom.xml中添加依赖 <dependency> <groupId>com.github.drtrang</groupId> <artif ...
- 鼠标经过事件(onmouseover)
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- hive表的存储路径查找以及表的大小
1.在hive中知道一个表的存储路径可以通过hive命令 desc formatted table_name 显示表的详细信息; 2.然后找到该表的存储路径 "Location: ...
- 关于datatables自适应以及自定义列宽度的总结
table-layout:fixed;可以自定义列的宽度 <div id="bizhi" style="width:100%;height: 85%;overflo ...
- tomcat去除项目名部署
实现方式及原理: 方式一: 原理:Tomcat的默认根目录是ROOT,实际上ROOT这个项目在实际生产环境是没有用的,所以我们可以用我们的项目覆盖ROOT项目 操作过程: 1.删除ROOT下所有文件及 ...
- Asp.net core 学习笔记 ( upload/download files 文件上传与下载 )
更新 : 2018-01-22 之前漏掉了一个 image 优化, 就是 progressive jpg refer : http://techslides.com/demos/progressi ...
- CentOS上安装seafile
一.安装python2.7.14(CentOS7上python默认版本是Python 2.7.5 ,不需要安装)1.安装依赖包[root@web01 ~]# yum -y install zlib z ...
- EntityFramework4.5使用Expression类创建动态查询及动态查询导航属性
创建动态查询 想在项目中实现一个灵活的动态查询类,参考http://www.cnblogs.com/lyj/archive/2008/03/25/1122157.html和http://www.cnb ...
- 机器学习基石(台湾大学 林轩田),Lecture 1: The Learning Problem
课程的讲授从logo出发,logo由四个图案拼接而成,两个大的和两个小的.比较小的两个下一次课程就可能会解释到它们的意思,两个大的可能到课程后期才会解释到它们的意思(提示:红色代表使用机器学习危险,蓝 ...