Pregunta

Recién estoy comenzando con la programación Qt y estoy tratando de crear un diseño de datos tabular simple usando un QTableView control con una clase modelo de mi propia creación heredada de QAbstractTableModel.Por alguna razón, mi vista de tabla termina luciendo así:

alt text
(fuente: nerdland.net)

¿Qué diablos son esas cosas que parecen casillas de verificación (pero no hacen nada cuando hago clic en ellas) en cada celda y cómo hago para que desaparezcan?No he cambiado nada de QTableView propiedades excepto el nombre del objeto.

Si es importante, el código de mi modelo es muy simple:

MyTableModel::MyTableModel(QObject* parent)
  : QAbstractTableModel(parent)
{
}

MyTableModel::~MyTableModel()
{
}

int MyTableModel::rowCount(const QModelIndex& parent) const
{
  return 1000; 
}

int MyTableModel::columnCount(const QModelIndex& parent) const
{
  return 5;
}

QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
  return "Foo";
}

La interfaz de usuario del cuadro de diálogo está integrada en Qt Designer y, dentro de la clase del cuadro de diálogo, adjunto el modelo a la vista de esta manera:

MyTableModel testModel = new MyTableModel(this);
ui.testTable->setModel(testModel);

Aparte de eso, no realizo ninguna operación en ui.testTable.

Usando Qt 4.6.

¿Fue útil?

Solución

Intente cambiar MyTableModel::data() a lo siguiente:

QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
    if (role == Qt::DisplayRole)
        return "foo";
    else
        return QVariant();
}

Probablemente el devueltos QVariant de papel Qt::CheckStateRole fue malinterpretado por el QTableView.

Otros consejos

¿Usted por casualidad sucede para establecer el Qt :: ItemIsUserCheckable banderas () ?

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