进度条的布局与不同的水平位置

时间:2016-12-16 19:44:27

标签: c++ qt user-interface

我想要一个垂直布局的tests/TestCase.php动态列表。但问题是我希望它们中的一些能够横向移动。例如:

QProgessBars

当我在布局中移动小部件时:

@@@@@@@@@@@@@@@@@
   @@@@@@@@@@@
        @@@@@@@@@@@
@@@@@@
没有任何反应。

我还尝试将sl->move(10, 0); 与间隔符一起使用:

QGridLayout

我有办法以编程方式进行吗?

2 个答案:

答案 0 :(得分:2)

您好,您需要使用此QGridLayout::addWidget版本。例如,当您执行

grid->addWidget(w1, 0, 0, 1, 5);
grid->addWidget(w2, 1, 1, 2, 3);
grid->addWidget(w3, 3, 0, 1, 5);

你的最终gui看起来像这样:

w1 w1 w1 w1 w1
   w2 w2 w2
   w2 w2 w2
w3 w3 w3 w3 w3

您可以将网格视为2D数组。所以w2从grid[1][1]开始,跨越2行3列。由于w2跨越2行,因此w3应从w1的行+2(即3)开始。

答案 1 :(得分:0)

布局嵌套,就像在html中一样。垂直布局有四个(或三个,如果第一行只有进度条)水平布局 Example done in designer

但是使用Grid作为顶部布局可以在边上添加边距。 当然,您可以通过编程方式执行此操作。我已经在Designer中展示了它的外观,但设计师实际上做的是生成简单的线性代码。你可以在循环中做到这一点。

生成的代码:

   if (Dialog->objectName().isEmpty())
            Dialog->setObjectName(QString::fromUtf8("Dialog"));
        Dialog->resize(504, 377);
        gridLayoutWidget = new QWidget(Dialog);
        gridLayoutWidget->setObjectName(QString::fromUtf8("gridLayoutWidget"));
        gridLayoutWidget->setGeometry(QRect(9, 9, 481, 351));
        gridLayout = new QGridLayout(gridLayoutWidget);
        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
        gridLayout->setContentsMargins(0, 0, 0, 0);
        horizontalLayout_3 = new QHBoxLayout();
        horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
        horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout_3->addItem(horizontalSpacer);

        progressBar_2 = new QProgressBar(gridLayoutWidget);
        progressBar_2->setObjectName(QString::fromUtf8("progressBar_2"));
        progressBar_2->setValue(24);

        horizontalLayout_3->addWidget(progressBar_2);

        horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout_3->addItem(horizontalSpacer_2);


        gridLayout->addLayout(horizontalLayout_3, 1, 0, 1, 1);

        horizontalLayout_2 = new QHBoxLayout();
        horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
        horizontalSpacer_3 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout_2->addItem(horizontalSpacer_3);

        progressBar_3 = new QProgressBar(gridLayoutWidget);
        progressBar_3->setObjectName(QString::fromUtf8("progressBar_3"));
        progressBar_3->setValue(24);

        horizontalLayout_2->addWidget(progressBar_3);


        gridLayout->addLayout(horizontalLayout_2, 2, 0, 1, 1);

        horizontalLayout = new QHBoxLayout();
        horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
        progressBar_4 = new QProgressBar(gridLayoutWidget);
        progressBar_4->setObjectName(QString::fromUtf8("progressBar_4"));
        progressBar_4->setValue(24);

        horizontalLayout->addWidget(progressBar_4);

        horizontalSpacer_4 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout->addItem(horizontalSpacer_4);


        gridLayout->addLayout(horizontalLayout, 3, 0, 1, 1);

        horizontalLayout_4 = new QHBoxLayout();
        horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
        progressBar = new QProgressBar(gridLayoutWidget);
        progressBar->setObjectName(QString::fromUtf8("progressBar"));
        progressBar->setValue(24);

        horizontalLayout_4->addWidget(progressBar);


        gridLayout->addLayout(horizontalLayout_4, 0, 0, 1, 1);