2010-03-07 18 views
22

hiç istenmeyen onay kutularına sahip, Qt programlama ile çalışmaya başladım ve QAbstractTableModel'dan kendi kalıtımımdaki bir model sınıfıyla bir QTableView denetimi kullanarak basit bir tablo veri düzeni oluşturmaya çalışıyorum. Nedense, benim tablo görünümü şu gibi bakıyor biter: QTableView, her hücrede

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

ne halt

onay kutularını benziyor (ama onlara tıkladığımda bir şey yapmayın) her hücrede bu şeyler vardır ve Onları nasıl uzaklaştıracağım? Nesnenin adı hariç QTableView özelliklerinden hiçbirini değiştirmedim.

Bu konularda

, benim modeli kod ölü basittir: iletişim UI Qt Designer inşa edilmiştir

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

ve diyalog sınıf içinde böyle görünümüne modeli takmak:

Bunun dışında
MyTableModel testModel = new MyTableModel(this); 
ui.testTable->setModel(testModel); 

Ben ui.testTable üzerinde hiçbir işlemleri gerçekleştirmek. Qt 4.6 kullanarak

.

cevap

47

Dene:

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

Muhtemelen döndü QVariant rolü Qt::CheckStateRole için QTableView tarafından yanlış anlaşıldı. Ben `QAbstractTableModel :: bayrakları (indeks) ~ Qt :: ItemIsUserCheckable dönmek için` flags` geçersiz Hayır ve dahi

+0

Mükemmel! Teşekkür ederim. Sanırım henüz öğrenmediğim parametreleri göz ardı etmemeliydim ... –

+3

Size yardımcı olduğum için sevindim :) Qt sadece kayalar! – Elrohir

+2

Sen de bana yardım ettin! –

2

flags() yılında Qt::ItemIsUserCheckable bayrağı set başına Onu tesadüfen musunuz? aşağıdakilere MyTableModel::data() değişen

+1

; ', onay kutuları kalır. –

İlgili konular