首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Qt官方示例-动态布局

Qt官方示例-动态布局

作者头像
Qt君
发布2020-06-17 15:27:22
发布2020-06-17 15:27:22
2.2K10
代码可运行
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程
运行总次数:0
代码可运行

该例子介绍如何在正在运行的应用程序中重新布局控件。

使用

  1. 例子使用QGridLayout布局。
代码语言:javascript
代码运行次数:0
运行
复制
mainLayout = new QGridLayout;
mainLayout->addWidget(rotatableGroupBox, 0, 0);
...
setLayout(mainLayout);
  1. rotatableGroupBox为QGroupBox类,并在内部使用了QGridLayout布局。
代码语言:javascript
代码运行次数:0
运行
复制
rotatableGroupBox = new QGroupBox(tr("Rotatable Widgets"));

rotatableWidgets.enqueue(new QSpinBox);
rotatableWidgets.enqueue(new QSlider);
rotatableWidgets.enqueue(new QDial);
rotatableWidgets.enqueue(new QProgressBar);
...
/* 绑定QGridLayout布局 */
rotatableLayout = new QGridLayout;
rotatableGroupBox->setLayout(rotatableLayout);

rotateWidgets();
  1. 当我们点击界面按钮Rotate Widgets时会执行下列函数进行重新布局。
代码语言:javascript
代码运行次数:0
运行
复制
void Dialog::rotateWidgets()
{
    Q_ASSERT(rotatableWidgets.count() % 2 == 0);

    foreach (QWidget *widget, rotatableWidgets)
        rotatableLayout->removeWidget(widget); /* 移除旧布局 */

    rotatableWidgets.enqueue(rotatableWidgets.dequeue());

    const int n = rotatableWidgets.count();
    for (int i = 0; i < n / 2; ++i) {
        /* 重新布局 */
        rotatableLayout->addWidget(rotatableWidgets[n - i - 1], 0, i);
        rotatableLayout->addWidget(rotatableWidgets[i], 1, i);
    }
}

总结

  本文例子中动态布局的主要实现使用了,布局类(QGridLayout)的addWidget和removeWidget操作。

关于更多

  • QtCreator软件可以找到:
  • 或在以下Qt安装目录找到:
代码语言:javascript
代码运行次数:0
运行
复制
C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\widgets\layouts\dynamiclayouts
  • 相关链接
代码语言:javascript
代码运行次数:0
运行
复制
https://doc.qt.io/qt-5/qtwidgets-layouts-dynamiclayouts-example.html
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用
  • 总结
  • 关于更多
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档