2010-03-07 8 views
22

में अवांछित चेकबॉक्स हैं, मैं अभी क्यूटी प्रोग्रामिंग के साथ शुरुआत कर रहा हूं, और से अपने स्वयं के निर्माण विरासत के मॉडल वर्ग के साथ QTableView नियंत्रण का उपयोग करके मैं एक सरल टैब्यूलर डेटा लेआउट बनाने की कोशिश कर रहा हूं। किसी कारण के लिए, मेरे तालिका दृश्य इस तरह लग रही समाप्त होता है:QTableView में प्रत्येक सेल

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

बिल्ली में क्या उन चीजों है कि चेक बॉक्स की तरह लग रही है (लेकिन जब मैं उन्हें क्लिक कुछ भी नहीं करते) हर कोशिका में हैं, और मैं उन्हें कैसे दूर कर सकता हूँ? मैंने ऑब्जेक्ट के नाम को छोड़कर QTableView गुणों में से कोई भी नहीं बदला है।

अगर यह मायने रखती है, अपने मॉडल कोड मृत सरल है:

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 क्यूटी डिजाइनर में बनाया गया है, और संवाद के लिए वर्ग के अंदर मैं इस तरह देखने के लिए मॉडल देते हैं:

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

इसके अलावा मैं ui.testTable पर कोई संचालन नहीं करता हूं।

क्यूटी 4.6 का उपयोग करना।

उत्तर

47

निम्न के MyTableModel::data() बदलने का प्रयास करें:

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

शायद लौटे QVariant भूमिका Qt::CheckStateRole के लिए QTableView द्वारा गलत समझा गया था।

+0

बिल्कुल सही! धन्यवाद। मुझे लगता है कि मुझे सिर्फ उन पैरामीटर को अनदेखा नहीं करना चाहिए जिन्हें मैंने अभी तक नहीं सीखा है ... –

+3

आपकी मदद करने में खुशी हुई :) क्यूटी बस चट्टानों! – Elrohir

+2

आपने मेरी भी मदद की! –

2

क्या आप flags() में ध्वज सेट करने के किसी भी मौके से ऐसा करते हैं?

+1

नहीं, और यहां तक ​​कि अगर मैं 'QAbstractTableModel :: झंडे (अनुक्रमणिका) और ~ क्यूटी :: ItemIsUser जांचने योग्य 'लौटने के लिए' झंडे 'को ओवरराइड करता हूं, तो भी चेकबॉक्स रहते हैं। –