كيف أقوم بإجراء قطن من الحاجيات؟
سؤال
كيف يمكنني صنع 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();
هذا لن يؤثر على حجم فو. إذا لم يكن هناك بالفعل عنصر في عدد الفهرس، فسوف يفشل ذلك. يرى إدفع إلى الخلف, ، أو المشغل <., والتي تضيف عنصر إلى نهاية القائمة.
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
}