布局管理

    xiaoxiao2021-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::LeftDockWidgetArea0x1Qt::RightDockWidgetArea0x2Qt::TopDockWidgetArea0x4Qt::BottomDockWidgetArea0x8Qt::AllDockWidgetAreasDockWidgetArea_MaskQt::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添加间距。
    转载请注明原文地址: https://ju.6miu.com/read-39079.html

    最新回复(0)