2

Qt 4などの動的な数のウィジェット(またはQVector他のコンテナクラス)を作成するにはどうすればよいですか?QPushButtonQComboBox

ウィンドウクラスのコンストラクターで次のものを使用しました。

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

そして今、私は動的に変更できるいくつかのコントロールでそれを埋めたいと思います:

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

私はこれに対する答えを見つけようとして何時間も検索しました。Qtフォーラムでは、の作成について言及していますQPtrListが、そのクラスはQt4には存在しません。.at()後で、配列スタイルのインデックスまたは関数を使用して、それぞれからテキスト値を取得しようとします。

任意のQWidgetsQComboBox、、QPushButtonなど)のデータ構造を宣言、初期化、および入力する例を本当にいただければ幸いです。

4

2 に答える 2

10

どうぞ :)

#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" );
}

簡単な例を機能させるだけの場合は、ウィジェットに(コンテキスト/クリーンアップのための)親の目的があることが重要です。

お役に立てれば。

于 2009-08-24T04:06:52.767 に答える
0
foo[count] = new QComboBox();

これはfooのサイズには影響しません。インデックスカウントのアイテムがまだない場合、これは失敗します。リストの最後に項目を追加するpush_backまたはoperator<<を参照してください。

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
}
于 2009-08-26T18:51:17.060 に答える