首页
IT
登录
6mi
u
盘
搜
搜 索
IT
布局管理
布局管理
xiaoxiao
2021-03-25
132
布局管理
相关内容:
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::LeftDockWidgetArea
0x1
Qt::RightDockWidgetArea
0x2
Qt::TopDockWidgetArea
0x4
Qt::BottomDockWidgetArea
0x8
Qt::AllDockWidgetAreas
DockWidgetArea_Mask
Qt::NoDockWidgetArea
0
各区域设定也可采用或(|)的方式。
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
添加间距。
转载请注明原文地址: https://ju.6miu.com/read-39079.html
技术
最新回复
(
0
)