Pregunta

Estoy usando QStandardItemModel con QStandardItem.

No quiero escribir mi propio modelo ni ningún delegado.

Sólo quiero tener un árbol de casillas de verificación con QComboBox en la segunda columna...

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);
}

¿Es posible utilizar setIndexWidget de esta manera?

ACTUALIZAR:

No tengo QComboBox en la segunda columna...¿Por qué?

¿Fue útil?

Solución

nope, no funcionará:

Esta función solo debe utilizarse para mostrar contenido estático dentro del área visible correspondiente a un elemento de datos.Si desea mostrar contenido dinámico personalizado o implementar un widget de editor personalizado, Subclase QitemDelegate en su lugar.

Otros consejos

es posible en realidad.Recomendaría primero crear un modelo con dos columnas.Cree los elementos en una fila y agréguelos al modelo.Solo después de agregar la fila con elementos a los que puedes llamar view->setIndexWidget(), con el contenido de su cuadro combinado.A mí me funcionó y tengo contenido dinámico.Los ItemDelegates son más complicados, lo recomendaría setIndexWidget() - funcionó para mí muy bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top