QTableView tiene casillas de verificación no deseadas en cada celda
-
25-09-2019 - |
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í:
(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.
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 () ?