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:

alt text
(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.

È stato utile?

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 () ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top