QT学习一布局管理

布局管理

分割窗口QSplitter类

QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0);
QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"),splitterMain);
QTextEdit *textRight = new QTextEdit(QObject::tr("Right Widget"),splitterMain);

其中,QSplitter是用来分割窗口,里面的参数Qt::Horizontal表示竖着切,第2和3行是给切开的两个窗口命名:
在这里插入图片描述
如果想再切,只需要改变QSplitter的对象:

QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain);

Qt::Vertical表示横着切,切割的结果如图:
具体代码如下:

    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 *textBottomtop = new QTextEdit(QObject::tr("Bootomtop Widget"));
    textBottomtop->setAlignment(Qt::AlignCenter);
    splitterRight->addWidget(textBottomtop);

停靠窗口QDockWidget类

QDockWidget类可以令子窗口停靠,拖动。

	setWindowTitle(tr("DockWindows"));
    QTextEdit *te=new QTextEdit(this);
    te->setText(tr("Main window"));
    te->setAlignment(Qt::AlignCenter);
    setCentralWidget(te);

    QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this);
    dock->setFeatures(QDockWidget::DockWidgetMovable);
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
    QTextEdit *tel = new QTextEdit();
    tel->setText(tr("Window1,The dock"));
    dock->setWidget(tel);
    addDockWidget(Qt::RightDockWidgetArea,dock);
  1. 创建QDockWidget对象的停靠窗体
  2. 设置窗体属性,通常setFeatures()和setAllowedArea()
  3. 新建一个要插入停靠窗体的控件,有QListWidget和QTextEdit
  4. 将控件插入停靠窗体,调用QDockWidget的setWidget()方法
  5. 使用addDockWidget()方法在MainWindow中加入次停靠窗体。
    不同的窗口类型只是setFeatures的不同。

堆栈窗口QStackedWidget类

堆栈窗口的作用是增加界面显示能力,不同的选项可以对应不同的窗口。

    setWindowTitle(tr("StackedWidget"));
    list = new QListWidget(this);
    list->insertItem(0,tr("Window1"));
    list->insertItem(1,tr("Window2"));
    list->insertItem(2,tr("Window3"));
    
    label1 = new QLabel(tr("WindowTest1"));
    label2 = new QLabel(tr("WindowTest2"));
    label3 = new QLabel(tr("WindowTest3"));

    stack = new QStackedWidget(this);
    stack->addWidget(label1);
    stack->addWidget(label2);
    stack->addWidget(label3);

在这里插入图片描述不同的list对应不同的窗口。

基本布局QLayout

可以通过UI直接整理布局,不需要太过了解。

综合示例

在这里插入图片描述代码太多,就不附了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值