2010-03-07 13 views
22

jestem dopiero zaczynasz z programowaniem Qt, i próbuję zrobić prosty układ danych tabelarycznych za pomocą QTableView kontrolę z klasy modelu własnego stworzenia dziedziczy z QAbstractTableModel. Z jakiegoś powodu, mój widok tabeli kończy się wyglądać jak ten:QTableView ma niechcianych wyboru w każdej komórce

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

Co do cholery są te rzeczy, które wyglądają jak pola wyboru (ale nic nie robią po kliknięciu je) w każdej komórce, i jak sprawić, by odeszły? Nie zmieniłem żadnej z właściwości QTableView, z wyjątkiem nazwy obiektu.

Jeśli ma to znaczenie, mój kod model jest martwy prosta:

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"; 
} 

UI dialog jest zbudowany w Qt Designer, a wewnątrz klasie okna załączam modelu do widoku tak:

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

Poza tym nie wykonuję żadnych operacji na ui.testTable.

Korzystanie z Qt 4.6.

Odpowiedz

47

Spróbuj zmienić MyTableModel::data() na następujące kwestie:

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

Prawdopodobnie powrócił QVariant do roli Qt::CheckStateRole został źle zrozumiany przez QTableView.

+0

Idealny! Dziękuję Ci. Przypuszczam, że nie powinienem po prostu ignorować parametrów, których jeszcze się nie nauczyłem ... –

+3

Cieszę się, że mogę Ci pomóc :) Qt po prostu kołysze! – Elrohir

+2

Też mi pomogłeś! –

2

Czy przez przypadek zdarzyło Ci się ustawić flagę Qt::ItemIsUserCheckable w flags()?

+1

Nie, i nawet jeśli przesłonię flagi 'do zwracania' QAbstractTableModel :: flags (index) & ~ Qt :: ItemIsUserCheckable; ', pola pozostaną. –

Powiązane problemy