문제

어떻게 만들 수 있습니까? QVector (또는 다른 컨테이너 클래스) 동적 수의 위젯 (예 : QPushButton 또는 QComboBox QT 4에서?

윈도우 클래스의 생성자에서 다음을 사용했습니다.

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

그리고 이제 나는 그것을 동적으로 변화시킬 수있는 몇 가지 컨트롤로 채우고 싶습니다.

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

나는 이것에 대한 답을 찾으려고 시간을 검색했습니다. QT 포럼은 a 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의 크기에 영향을 미치지 않습니다. 인덱스 카운트에 아직 항목이 없으면 실패합니다. 보다 푸시 _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