سؤال

كيف يمكنني صنع 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
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top