2010-03-09 10 views
6

मैं एक QTableView कि डेटा रूप में एक QStandardItemModel के साथ भरी हुई है हो रहा हैक्यूटी में QTableView के लिए टैब आदेश की स्थापना 4.4

Parameter Value 

    X1   0.456 
    X2   0.123 
.... and so on. 

अब मैं इस तरह से है कि मैं पार कर सकते हैं में टैब आदेश गुण सेट करने के लिए है केवल मूल्यों के माध्यम से और पैरामीटर नहीं। यानी जब नियंत्रण 0.456 पर है और यदि मैं 'टैब' कुंजी दबाता हूं, तो इसे 0.123 पर जाना होगा और एक्स 2 (डिफ़ॉल्ट व्यवहार) नहीं होना चाहिए। इसके अलावा कॉलम पैरामीटर में एड ट्रिगर अक्षम हैं और मैं केवल मानों को बदल सकता हूं।

मुझे QWidget :: setTabOrder (QWidget *, QWidget *) पता है, लेकिन चूंकि मैं QStandardItemModel के माध्यम से डेटा सेट कर रहा हूं, मैं QTableView में वांछित टैब ऑर्डर कैसे प्राप्त कर सकता हूं? मैं क्यूटी 4.4 और विंडोज एक्सपी का उपयोग कर रहा हूँ। इसके अलावा मैंने यूआई तत्वों को डिजाइन करने के लिए क्यूटी डिजाइनर का उपयोग नहीं किया। सब कुछ केवल कोड के माध्यम से है।

उत्तर

2

सबक्लास QTableView और keyPressEvent ओवरराइड करें। घटना में टैब कुंजी की जांच करें, अन्यथा बेस कार्यान्वयन को कॉल करें। वर्तमान में चयनित इंडेक्स को व्यू के चयन मॉडल से प्राप्त करें। व्यू के एडिट्रिगर को CurrentChanged पर सेट करें, या मैन्युअल नियंत्रण के लिए अपने स्वयं के QItemDelegate पर रखें।

2

वास्तव में जब आप संपादन कर रहे हैं तो keyPressEvent उत्सर्जित नहीं होता है, इसके बजाय आपको क्लोज एडिटर को फिर से कार्यान्वित करना होगा और संकेत की जांच करनी होगी। अगर संकेत QAbstractItemDelegate :: EditNextItem है तो चयन मॉडल बदलें :: currentIndex और उपयोग QTableView :: संपादित करें का उपयोग करें।

अन्य समाधान केवल काम करता है जब आप संपादन कर नहीं रहे हैं, लेकिन फिर भी यह मुझे एक प्रारंभिक बिंदु तो मैं यह इनाम

+0

यह भी सहायक हो सकता है दे रहा हूँ दिया: [qtableview संपादन व्यवहार को अनुकूलित] (http : //www.hardcoded.net/articles/how-to-customize-qtableview-editing-behavior.htm) –

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