2011-02-11 11 views
15

में एक पंक्ति का चयन करना मेरे पास QFileSystemModel के साथ मॉडल के रूप में QTreeView है।QTreeView प्रोग्रामेटिक रूप से

QTreeView में SelectionBehavior SelectRows पर सेट है।

idx = treeview->model()->index(search); 
selection->select(idx, QItemSelectionModel::Select); 

यह एक सेल, नहीं पंक्ति का चयन करता है:

मेरी कोड में मैं चयन करने के लिए और उसके बाद के माध्यम से उनका चयन एक डाटासेट पढ़ें। ।

ने एक बेवकूफ कामकाज जोड़ा है, लेकिन यह सही तरीके से इसे ठीक करेगा।

for (int col=0; col< treeview->model()->columnCount(); col++) 
{ 
    idx = treeview->model()->index(search, col); 
    selection->select(idx, QItemSelectionModel::Select); 
} 

या यह ^^ ऐसा करने का एकमात्र तरीका है?

treeview->setSelectionBehavior (QAbstractItemView::SelectRows) 
+4

'चयन' क्या है? – ssc

+1

मुझे लगता है कि 'चयन' एक [QItemSelectionModel] है (http://doc.qt.io/qt-5/qitemselectionmodel.html)। – altendky

उत्तर

11

तुम भी एक QItemSelection का उपयोग कर एक पूरी पंक्ति का चयन कर सकते एक पूर्ण पंक्ति का चयन करने के लिए, आपको निम्न का उपयोग करना चाहिए:

selection->select(idx, QItemSelectionModel::Select | QItemSelectionModel::Rows); 

ध्यान दें कि आप कभी-कभी चयन को साफ़ करना चाहते हैं:

selection->select(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); 
+0

अपने समाधान का प्रयास कर रहा है। पीएस। पहले से ही SelectRows व्यवहार सेट (जैसा कि प्रश्न की दूसरी पंक्ति पर बताया गया है) –

17

अगर आप चाहते हैं:

selection->select (
    QItemSelection (
     treeview->model()->index (search, 0), 
     treeview->model()->index (search, treeview->model()->columnCount() - 1)), 
    QItemSelectionModel::Select); 

इसके अलावा, अगर आप भी पंक्ति चयन उपयोगकर्ता क्लिक के लिए आप चयन व्यवहार निर्धारित करने की आवश्यकता हैं:

+2

आप चुनने से पहले स्वचालित रूप से चयन को साफ़ करने के लिए 'QItemSelectionModel :: Select' के बजाय 'QItemSelectionModel :: ClearAndSelect' का उपयोग भी कर सकते हैं। – Gojir4

+0

यह प्रश्न 'QItemSelectionModel :: पंक्तियों' की सादगी के कारण बहुत बेहतर है। टिप्पणी का सुझाव शामिल करने के लिए जवाब संपादित करना। – Phlucious