QTableView ha caselle di controllo indesiderati in ogni cellula
-
25-09-2019 - |
Domanda
Sto appena iniziato con la programmazione Qt, e sto cercando di fare un layout semplice dati tabulari utilizzando un controllo QTableView
con una classe modello della mia creazione che eredita da QAbstractTableModel
. Per qualche ragione, la mia opinione tavolo finisce per guardare in questo modo:
(fonte: nerdland.net )
Che cosa nel diavolo sono quelle cose che sembrano le caselle di controllo (ma non fare niente quando li clicco) in ogni cellula, e come faccio a farli andare via? Non ho cambiato nessuna delle proprietà QTableView
tranne che per il nome dell'oggetto.
Se è importante, il mio codice modello è morto semplice:
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 finestra di interfaccia utente è costruito in Qt Designer, e all'interno della classe per la finestra di dialogo I allegare il modello per la vista in questo modo:
MyTableModel testModel = new MyTableModel(this);
ui.testTable->setModel(testModel);
Oltre a questo eseguo alcuna operazione sul ui.testTable
.
Utilizzando Qt 4.6.
Soluzione
Provare a cambiare MyTableModel::data()
al seguente:
QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
if (role == Qt::DisplayRole)
return "foo";
else
return QVariant();
}
Probabilmente la tornati QVariant per il ruolo Qt::CheckStateRole
stato frainteso dal QTableView.
Altri suggerimenti
Lo fai per caso capita di impostare il Qt :: ItemIsUserCheckable bandiera bandiere () ?