2010-12-09 8 views
8

का उपयोग करते समय चेकबॉक्स का संरेखण मैं तालिका कक्ष में चेकबॉक्स प्रदर्शित करने के लिए QT :: ItemIsUserCheckable का QTableView के चेकबॉक्स ध्वज का उपयोग कर रहा हूं।क्यूटी QTableView - IsUserCheckable

कोशिका के भीतर चेकबॉक्स केंद्र के लिए एक प्रयास में संरेखण पर कुछ बातें पढ़ने के बाद, मैं क्यूटी :: AlignCenter TextAlignmentRole के रूप में मॉडल डेटा से() फ़ंक्शन लौट रहा हूँ।

QVariant ExampleModel::data(const QModelIndex &index, int role) const 
{ 
    if(!index.isValid()) 
    return QVariant(); 

    if (role == Qt::TextAlignmentRole) 
     return Qt::AlignCenter | Qt::AlignVCenter; 
} 

हालांकि यह मेरे चेकबॉक्स को संरेखित नहीं कर रहा है।

क्या कोई जानता है कि चेकबॉक्स को संरेखित करना इस मोड है?

उत्तर

3

प्रतिनिधि विकल्पों में आगे की जांच पड़ताल करने के बाद मैं एक अच्छा संदर्भ पाया (दुर्भाग्य से अब उपलब्ध नहीं) और निम्न संकर एक QItemDelegate का उपयोग कर के साथ आया था और IsUser जांच योग्य है।

अनिवार्य रूप से, आप QItemDelegate विस्तार करने के लिए, और reimplement, केंद्र और उचित राज्य के साथ मॉडल सेट करते समय माउस और कीबोर्ड की घटनाओं को संभालने के लिए editorEvent उपयोग करने के लिए drawCheck समारोह का उपयोग कर की जरूरत है।

void drawCheck(QPainter* painter, QStyleOptionViewItem const& option, QRect const& rect, Qt::CheckState state) const 

और

bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) 

इसके अलावा इस समान प्रश्न here देखें ...

+0

लिंक के 2 टूट रहे हैं –

2

संभवतः वह उत्तर नहीं जिसे आप ढूंढ रहे हैं, हालांकि मुझे qtableviews का उपयोग करते समय अपने स्वयं के चेकबॉक्स आइटम प्रतिनिधि को लागू करना बहुत आसान लगता है।

2

TextAlignmentRole वास्तव में इसका अर्थ यह है कि यह क्या कहता है। दुर्भाग्यवश, जैसा कि आपने शायद देखा है, ऐसा कोई आइकन/विजेट संरेखण भूमिका बिल्कुल उपलब्ध नहीं प्रतीत होता है।

बग रिपोर्ट: http://bugreports.qt-project.org/browse/QTBUG-9047

कुछ जवाब के साथ

एक ही प्रश्न: http://lists.trolltech.com/qt-interest/2006-06/msg00476.html

संबंधित मुद्दे