题
我如何做一个 QVector
(或一些其它的容器类)的一个动态的数量的小部件,例如 QPushButton
或 QComboBox
在脱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
}
不隶属于 StackOverflow