如何在不设计的情况下将Button添加到页面?

时间:2013-04-17 16:44:26

标签: c++ qt qt5

我是QT的新手。我开发了一个需要1024 line的程序,每行有两个按钮,两个单选按钮和两个lalbes。我有两种方法。

  1. 在设计师模式下,我拖放2 * 1204个按钮,2 * 1024个标签和2 * 1024     单选按钮,这是不合逻辑的。
  2. 有一种方法,没有设计师模式和拖放添加这个小部件     例如在运行时我点击一个按钮和代码隐藏     将这些小部件(标签,按钮,单选按钮)添加到页面或类似的东西。
  3. 我在网络编程中做了第二种方式。这可能在QT?还是那样的东西?

2 个答案:

答案 0 :(得分:0)

你在Qt Designer中所做的一切最终都转化为C ++代码,创建对象并将它们相互链接。

因此,获取该代码(查看生成的头文件)并将其置于for循环中是非常简单的。或者甚至自己重新开始,创建三个按钮并将它们添加到布局只需几行代码。

答案 1 :(得分:0)

您可以通过编程方式创建小部件并通过布局调整其位置。 例如,它可能如下所示:

QVBoxLayout *topLayout = new QVBoxLayout();

for (int lineNumber = 0; lineNumber < 1024; ++lineNumber)
{
    QWidget *oneLineWidget = new QWidget(this);
    QHBoxLayout *oneLineWidgetLayout = new QHBoxLayout();
    { //added these brackets just for the ease of reading.
        QLabel *labFirst = new QLabel(tr("first label"), oneLineWidget);
        QLabel *labSecond = new QLabel(tr("second label"), oneLineWidget);
        QPushButton *bFirst = new QPushButton(tr("first button"), oneLineWidget);
        QPushButton *bSecond = new QPushButton(tr("second button"), oneLineWidget);
        QRadioButton *rbFirst = new QRadioButton(tr("first radiobutton"), oneLineWidget);
        QRadioButton *rbSecond = new QRadioButton(tr("second radiobutton"), oneLineWidget);

        oneLineWidgetLayout->addWidget(labFirst);
        oneLineWidgetLayout->addWidget(labSecond);
        oneLineWidgetLayout->addWidget(bFirst);
        oneLineWidgetLayout->addWidget(bSecond);

        //lets put one radioButton under another. 
        QVBoxLayout *radioButtonsLayout = new QVBoxLayout();
        {
            radioButtonsLayout->addWidget(rbFirst);
            radioButtonsLayout->addWidget(rbSecond);
        }
        //and now we can combine layouts.
        oneLineWidgetLayout->addLayout(radioButtonsLayout);

    }
    oneLineWidget->setLayout(oneLineWidgetLayout);

    topLayout->addWidget(oneLineWidget);
}

this->setLayout(topLayout);

您可以使用不同类型的布局(QBoxLayout,QGridLayout,QFormLayout等)。您可以从QLayout documentation开始。有一个继承它的类列表。 我希望它会有所帮助!祝你好运!