위젯의 QVector를 어떻게 만드나요?
문제
어떻게 만들 수 있습니까? 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
}
제휴하지 않습니다 StackOverflow