QT5布局管理

QT5布局管理

分割窗口 QSplitter类

分割窗口 QSplitter类在应用程序中经常用到,它可以灵活分布窗口的布局,经常用 在类似文件资源管理器的窗口设计中。

示例代码:

#include <QApplication>
#include <QTextEdit>
#include <QPixmap>
#include <QSplitter>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QFont font("ZYSongl8030",12);
    a.setFont (font);
//主分割窗口
    QSplitter *splitterMain =new QSplitter(Qt::Horizontal,0);
    QTextEdit *textLeft =new QTextEdit(QObject::tr("Left Widget"),splitterMain);
    textLeft->setAlignment(Qt::AlignCenter);
//右部分分割窗口
    QSplitter	*splitterRight	=new QSplitter(Qt::Vertical,
                                                  splitterMain);
    splitterRight->setOpaqueResize(false);
    QTextEdit *textUp =new QTextEdit(QObject::tr("Top Widget"), splitterRight);
    textUp->setAlignment(Qt::AlignCenter);
    QTextEdit *textBottom =new QTextEdit(QObject::tr("Bottom Widget") , splitterRight);
    textBottom->setAlignment(Qt::AlignCenter);
    splitterMain->setStretchFactor (1,1); splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();
// MainWindow w;
// w.show();
    return a.exec ();
}

效果展示:

在这里插入图片描述

停靠窗口 QDockWidget类

停靠窗口 QDockWidget类也是应用程序中经常用到的。

示例代码:

#include <QApplication>
#include <QMainWindow>
#include <QDockWidget>
#include <QTextEdit>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow *window = new QMainWindow();
    window->setWindowTitle (( "DockWindows") ) ;//设置主窗口 的标题栏文字 QTextEdit *te=new QTextEdit (this) ;//定义一个 QTextEdit 对象作为主窗口 te->setText(tr("Main Window"));

    //停靠窗口 1
    QDockWidget *dock=new QDockWidget(("DockWindowl"),window);
    dock->setFeatures(QDockWidget::DockWidgetMovable);
    //可移动
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
    QTextEdit *tel =new QTextEdit();
    tel->setText(("Windowl,The dock widget can be moved between docks by the usern n "));
    dock->setWidget(tel);
    window->addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗口 2
    dock=new QDockWidget(("DockWindow2"),window);
    dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable) ; //可关闭、可浮动
    QTextEdit *te2 =new QTextEdit();
    te2->setText(("Window2,The dock widget can be detached from the main window,""and floated as an independent window, and can be closed"));
    dock->setWidget(te2);
    window->addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗口 3
    dock=new QDockWidget (("DockWinciow3") , window);
    dock->setFeatures (QDockWidget::AllDockWidgetFeatures) ;//全部特性
    QTextEdit *te3 =new QTextEdit();
    te3->setText (( "Window3, The dock widget can be closed, moved, and floated"));
    dock->setWidget(te3);
    window->addDockWidget(Qt::RightDockWidgetArea,dock);
    window->show();
    return a.exec ();
}

效果展示:

在这里插入图片描述

堆栈窗体QStackedWidget类

堆栈窗体QStackedWidget类也是应用程序中经常用到的。在实际应用中,堆 栈窗体多与列表框QListWidget及下拉列表框QComboBox配合使用。

示例代码:

#include <QApplication>
#include <QMainWindow>
#include <QComboBox>
#include <QStackedWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <iostream>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow *window = new QMainWindow();
    QWidget *widget = new QWidget();
    QVBoxLayout *layout = new QVBoxLayout();
    widget->setLayout(layout);
    window->setCentralWidget(widget);
    QComboBox *box = new QComboBox();
    QStringList list{"1","2","3"};
    box->addItems(list);
    QStackedWidget *sw = new QStackedWidget();
    QPushButton *btn = new QPushButton("1");
    QPushButton *btn1 = new QPushButton("2");
    QPushButton *btn2 = new QPushButton("3");
    sw->addWidget(btn);
    sw->addWidget(btn1);
    sw->addWidget(btn2);
    layout->addWidget(box);
    layout->addWidget(sw);
    QObject::connect(box, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [sw](int index){
        sw->setCurrentIndex(index);
    });
    window->show();
    return a.exec ();
}

效果展示:

在这里插入图片描述

基本布局(QLayout)

Qt 提供了 QHBoxLayout 类、QVBoxLayout 类及 QGridLayout 类等的基本布局 管理,分别是水平排列布局、垂直排列布局和网格排列布局。它们之间的继承关系

在这里插入图片描述

布局中常用的方法有addWidget()和addLayout ()。

addWidget()方法用于向布局中加入需要布局的控件,add Widget()的函数原型

void addWidget(QWidget *widget,int fromRow,int fromColumn,int rowSpanfint columnspan,Qt::Alignment alignment=0 )

addLayout ()方法用于向布局中加入需要布局的子布局,addLayout ()的函数原 型如下:

void addLayout
(QLayout Payout,	//表示需要插入的子布局对象
int row.	//插入的起始行
int column.	//插入的起始列
int rowSpan,	//表示占用的行数
int columnSpan,	//表示占用的列数
Qt::Alignment alignment=0	//指定对齐方式
)

上述例子中已经使用了部分的Layout代码。此处不再做详细展示了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

turbolove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值