布局管理

布局管理
相关内容:
1.分割窗体:QSplitter类
分割器允许用户通过拖动子控件的边界来控制子控件的大小。 任何数量的控件都可以由单个分离器控制。 QSplitter的典型用法是创建多个小部件并使用insertWidget ()或addWidget ()添加它们。
     QSplitter * splitter = new QSplitter (parent);
     QListView * listview = new QListView ;
     QTreeView * treeview = new QTreeView ;
     QTextEdit * textedit = new QTextEdit ;
     splitter - > addWidget(listview);
     splitter - > addWidget(treeview);
     splitter - > addWidget(textedit); 

构造函数:QSplitter::QSplitter(Qt::Orientation orientation ,QWidget *parent=Q_NULLPTR)
其中第一个参数Orientation表示方向;第二个参数是父对象。

void setStretchFactor(int index ,int stretch);
用于设置可伸缩控件,第一个参数用于指定设置的控件序号,控件序号按照插入的先后顺序从0起依次排序,第二个参数大于0,表示此控件位可伸缩控件,如setStretchFactor(0,0).

2.停靠窗口QDockWidget类
构造函数:QDockWidget(const QString &title, QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())

QDockWidget类提供了一个小部件,可以停靠在QMainWindow或浮动为桌面上的顶级窗口。
QDockWidget提供了dock小部件的概念,也称为工具调色板或实用程序窗口。 Dock窗口是放置在QMainWindow 中心窗口周围的窗口小部件中的辅助窗口 。
设置停靠窗口的一般流程如下:
  • 创建一个QDockWidget的对象;
  • 设置此停靠窗体的属性,通常调用setFeatures()及setAllowAreas()两种方法。
  • 创建一个要插入停靠窗体的控件,通常有QListWidget,QTextEdit.
  • 将控件插入停靠窗体,调用QDockWidget的setWidget()方法。
  • 使用addDockWidget()方法在MainWindow中加入停靠窗体。

其中:setFeatures(DockWidgetFeature features),包括以下几个参数:
  • QDockWidget::DockWidgetClosable:停靠窗体可关闭;
  • QDockWidget::DockWidgetMovable:停靠窗体可移动;
  • QDockWidget::DockWidgetFloatable:停靠窗体可浮动;
  • QDockWidget::AllDockWidgetFeatures:拥有停靠窗体的所有特性;
  • QDockWidget::NoDockWidgetFeatures:不可移动,不可浮动,不可关闭。
void setAllowedAreas(Qt::DockWidgetAreas areas)
可停靠区域:
Qt::LeftDockWidgetArea0x1
Qt::RightDockWidgetArea0x2
Qt::TopDockWidgetArea0x4
Qt::BottomDockWidgetArea0x8
Qt::AllDockWidgetAreasDockWidgetArea_Mask
Qt::NoDockWidgetArea0
各区域设定也可采用或(|)的方式。

3.堆栈窗体QStackedWidget类
QStackedWidget类提供了一组小部件,其中一次只能看到一个小部件。
可以用来创建一个类似于QTabWidget提供的用户界面 。 它是一个方便的布局小部件建立在QStackedLayout类的顶部。
QStackedLayout , QStackedWidget可以构造和填充一些子窗口小部件(“页”):
     QWidget * firstPageWidget = new QWidget ;
     QWidget * secondPageWidget = new QWidget ;
     QWidget * thirdPageWidget = new QWidget ;

     QStackedWidget * stackWidget = new QStackedWidget ;
     stackedWidget - > addWidget(firstPageWidget);
     stackedWidget - > addWidget(secondPageWidget);
     stackedWidget - > addWidget(thirdPageWidget);

     QVBoxLayout * layout = new QVBoxLayout ;
     layout - > addWidget(stackedWidget);
     setLayout(layout); 

QStackedWidget没有提供用户切换页面的固有手段。  这通常通过一个QComboBox或一个QListWidget来存储QStackedWidget的页面的标题。 例如:
QComboBox * pageComboBox = new QComboBox ; pageComboBox - > addItem(tr( “Page 1” )); pageComboBox - > addItem(tr( “Page 2” )); pageComboBox - > addItem(tr( “Page 3” )); connect(pageComboBox , SIGNAL(activate( int )) , stackWidget , SLOT(setCurrentIndex( int )));
此处的Index按插入的顺序从0起排序,与QComboBox的条目排序一致。

4.布局管理器
布局常用的方法:addWidget(),addLayout();
addStretch()插入一个占位符;

void QGridLayout::setColumnStretch(int column, int stretch):设置列的占空比。
如:setColumnStretch(0,1);
setColumnStretch(1,3);
可将两列占空比设置为 1:3
拉伸因子相对于该网格中的其他列。 具有较高拉伸系数的列占用更多的可用空间。
默认拉伸系数为0.如果拉伸系数为0,并且此表中的其他列也不能增长,则列可能仍会增长。
另一种方法是使用addItem ()和QSpacerItem添加间距。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值