سؤال

أنا أستخدم QStandardItemModel مع QStandardItem's.

لا أريد أن أكتب النموذج الخاص بي وأي مندوبين.

أريد فقط الحصول على شجرة من مربعات الاختيار مع QComboBox'es في العمود الثاني ...

m_model->setColumnCount(2);
for (int i = 0; i < sectionCount; i++)
{
    QStandardItem * section = new QStandardItem(tr("Section %1").arg(i+1));
    section->setCheckable(true);
    section->setCheckState(Qt::Checked);

    for (int j = 0; j < itemsCount; j++)
    {
        QStandardItem * item = new QStandardItem(tr("Item %1").arg(j+1));
        item->setCheckable(true);
        item->setCheckState(Qt::Checked);

        QStandardItem * item2 = new QStandardItem("xxx");

        section->appendRow(QList<QStandardItem*>() << item << item2);

        QComboBox * combo = new QComboBox();
        QModelIndex index = m_model->index(j, 1, );

        // HERE i have index = {-1;-1}

        ui->treeView_options->setIndexWidget(index, combo);
    }
    m_model->appendRow(section);
}

هل من الممكن استخدام setIndexWidget بهذه الطريقة؟

تحديث:

ليس لدي QComboBox في العمود الثاني ...لماذا؟

هل كانت مفيدة؟

المحلول

كلا، لن تعمل:

يجب استخدام هذه الوظيفة فقط لعرض محتوى ثابت داخل المنطقة المرئية المقابلة لعنصر من البيانات.إذا كنت ترغب في عرض محتوى ديناميكي مخصص أو تطبيق عنصر واجهة مستخدم محرر مخصص، فئة فرعية Qitemdelegate بدلا من ذلك.

نصائح أخرى

فمن الممكن في الواقع.أوصي أولاً بإنشاء نموذج بعمودين.قم بإنشاء العناصر في صف واحد وإلحاقها بالنموذج.فقط بعد إلحاق الصف بالعناصر التي يمكنك الاتصال بها view->setIndexWidget(), ، مع محتوى combobox الخاص بك.لقد نجح الأمر بالنسبة لي، ولدي محتوى ديناميكي.إن ItemDelegates أكثر تعقيدًا، أوصي به setIndexWidget() - عملت بالنسبة لي على ما يرام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top