2010-03-07 19 views
22

Estoy comenzando con la programación de Qt, y estoy tratando de hacer un diseño de datos tabular simple usando un control QTableView con una clase de modelo de mi propia creación que hereda de QAbstractTableModel. Por alguna razón, mi vista de tabla termina pareciéndose a esto:QTableView tiene casillas de verificación no deseadas en cada celda

alt text http://users.nerdland.net/tyler/files/pics/qtableview_checkboxes.png

Qué diablos son esas cosas que se parecen a las casillas de verificación (pero no hacen nada al hacer clic en ellos) en cada célula, y ¿Cómo los hago desaparecer? No he cambiado ninguna de las propiedades QTableView a excepción del nombre del objeto.

si importa, mi código de 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 de diálogo se construye en Qt Designer y dentro de la clase para el diálogo hay que adjuntar el modelo a la vista como esta:

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

Aparte de eso no realizo operaciones en ui.testTable.

Usando Qt 4.6.

Respuesta

47

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 QVariant devuelto por el papel Qt::CheckStateRole fue malinterpretado por el QTableView.

+0

¡Perfecto! Gracias. Supongo que no debería estar ignorando los parámetros que aún no he aprendido ... –

+3

Me alegro de ayudarte :) ¡Qt simplemente rockea! – Elrohir

+2

¡Tú también me has ayudado! –

2

¿Por casualidad sucede que configure la bandera Qt::ItemIsUserCheckable en flags()?

+1

No, e incluso si invalido 'flags' para devolver' QAbstractTableModel :: flags (index) & ~ Qt :: ItemIsUserCheckable; ', las casillas de verificación permanecen. –

Cuestiones relacionadas