2008-09-25 14 views
6

मेरे पास एक मॉडल है और दो दृश्य इस तरह स्थापित हैं:प्रॉक्सी मॉडल के साथ काम करने के लिए मैं चयन मॉडल कैसे प्राप्त करूं?

Model ---> OSortFilterProxyModel ---> OListView 
Model ------------------------------> OTableView 

जब उपयोगकर्ता किसी एक दृश्य में कुछ चुनता है, तो मैं चाहता हूं कि वह दृश्य उस चयन को दर्पण करे। तो मैंने सोचा कि मैं उन्हें एक साथ जोड़ने के लिए QSelectionModel का उपयोग करूंगा। लेकिन यह काम नहीं करता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि विचारों का मानना ​​है कि उनके पास दो अलग-अलग मॉडल हैं, जबकि वास्तव में उनके पास एक ही मॉडल है। क्या यह काम करने के लिए कोई रास्ता है?

उत्तर

2

शायद यह हो रहा है कि विचारों में दो अलग-अलग मॉडल हैं। एक आपका मूल मॉडल है, दूसरा सॉर्ट फ़िल्टर मॉडल है।

मुझे यकीन नहीं है कि यह काम करेगा या नहीं, और यह क्यूटी पर निर्भर करता है कि "सक्रिय" क्या है, लेकिन आप प्रत्येक दृश्य के सक्रिय स्लॉट में फ़ंक्शन को कनेक्ट कर सकते हैं। ये आपको एक मॉडल इंडेक्स पास करेंगे। आपको प्रॉक्सी मॉडल के माध्यम से उचित दिशा में मॉडल इंडेक्स भेजना होगा (mapFromSource और MapToSource)। फिर, दूसरे दृश्य पर setCurrentIndex को कॉल करें।

सक्रिय सिग्नल के लिए प्रलेखन बताता है कि "सक्रिय" माना जाता है जो प्लेटफ़ॉर्म द्वारा भिन्न होता है। अन्य सिग्नल हो सकते हैं जिन पर आप ला सकते हैं, जैसे चयन मॉडल के चयन में सिग्नल बदल गया। उपयोगकर्ता द्वारा देखी गई चयन को बदलने के लिए आपको एक अलग कॉल करना पड़ सकता है। और आखिरकार, व्युत्पन्न QSelectionModel में ऐसा करना संभव हो सकता है, जब तक आप स्रोत मॉडल से मैपिंग के बारे में याद रखें।

1

यह सुनिश्चित नहीं है कि आपका मॉडल सबक्लास लागू किया गया है - लेकिन चयन लगातार मॉडल इंडेक्स पर निर्भर करता है। क्या आप कुछ स्रोत कोड प्रदान कर सकते हैं? क्या आप दोनों पर एक ही चयन मॉडल का उपयोग कर रहे हैं?

1

आपको void QItemSelectionModel::selectQAbstractProxyModel::mapSelectionFromSource और QAbstractProxyModel::mapSelectionToSource के साथ संयुक्त रूप से उपयोग करने की आवश्यकता है। QListView के selectionChange संकेत हैंडलर में आप QTableView के signalChange संकेत हैंडलर में

tableView->selection()->select(
    proxyModel->mapSelectionToSource(selected), 
    QItemSelectionModel::ClearAndSelect); 

और analogically mapSelectionFromSource साथ होना चाहिए।

ध्यान दें कि मुझे यकीन नहीं है कि क्यूटी अनंत रिकर्सन को रोक देगा जब तालिका सूची का चयन बदल जाएगी जो बदले में तालिका का चयन बदल जाएगी और ...

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

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