我如何做一个 QVector (或一些其它的容器类)的一个动态的数量的小部件,例如 QPushButtonQComboBox 在脱4吗?

我用以下在我的窗口类的构造:

QVector<QComboBox*> foo; // Vector of pointers to QComboBox's

现在我想填满它与一些数量的控制,这可以改变动态的:

for(int count = 0; count < getNumControls(); ++count) {
    foo[count] = new QComboBox();
}

我搜索了几个小时试图找到答案。该脱论坛的提及使得一个 QPtrList, 但这类不再存在Qt4.我后来试图让该文本值从每一个使用阵风格的索引或 .at() 功能。

我真的很感激的一个例子的声明,初始化,并填入任何数据结构的任何 QWidgets (QComboBox, QPushButton, 等)。

有帮助吗?

解决方案

在这里你去:)

#include <QWidget>
#include <QList>
#include <QLabel>
...
QList< QLabel* > list;
...

list << new QLabel( parent, "label 1" );
..
..

foreach( QLabel* label, list )  {
label->text();
label->setText( "my text" );
}

如果你正在尝试只是为了得到一个简单的例子来上班,其重要的是你的小部件有父(上下文/清理)的目的。

希望这有助于。

其他提示

foo[count] = new QComboBox();

这不会影响大小foo。如果没有已经是一个项目索引计数,这将失败。看看 push_back, 或 操作员<<, ,其中添加一个项目到底该清单。

QVector<QComboBox*> foo;
// or QList<QComboBox*> foo;
for(int count = 0; count < getNumControls(); ++count) {
    foo.push_back(new QComboBox());
    // or foo << (new QComboBox());
}

后来,检索的价值观:

foreach (QComboBox box, foo)
{
  // do something with box here
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top