इस के रूप में एक ही सटीक समस्या से QItemSelectionModel का उपयोग करते समय (?): Connecting QTableView selectionChanged signal produces segfault with PyQtPySide: SEGFAULT QListView
मैं एक QListView है, और मुझे एक समारोह कॉल करना चाहते हैं जब एक आइटम का चयन किया गया है:
self.server_list = QtGui.QListView(self.main_widget)
self.server_list_model = QtGui.QStandardItemModel()
self.server_list.setModel(self.server_list_model)
self.server_list.selectionModel().selectionChanged.connect(self.server_changed)
लेकिन, जब यह अंतिम पंक्ति तक पहुंच जाता है, जहां मैं चयन मॉडल का उपयोग कर रहा हूं, ऐप क्रैश हो जाता है। ट्रेसबैक के साथ नहीं, लेकिन विंडोज़ से "एपनाम ने काम करना बंद कर दिया है" के साथ। मुझे पूरा यकीन है कि एक segfault है।
लेकिन जब मैं PyQt4 का उपयोग करता हूं तो यह ठीक काम करता है। मैं पायसाइड का उपयोग कर रहा हूं क्योंकि यह एलजीपीएल है।
हां, मैं सब कुछ के नवीनतम संस्करणों पर हूं (पायसाइड: 1.2.1, पायथन 2.7.5, क्यूटी 4.8.5)।
किसी को भी इस के साथ मेरी मदद कर सकते हैं?
यह भी मेरे लिए काम किया। (मैंने self.server_list.selectionModel() के बजाय अंतिम पंक्ति में self.server_list_selection_model का उपयोग किया।) लेकिन यह क्यों काम करता है और प्रश्न में कोड काम नहीं करता है? –
आप सही हैं, यह अंतिम पंक्ति में self.server_list_selectionModel होना चाहिए। मैं इसे सही कर दूंगा। मैं इसे खुद समझ में नहीं आता, लेकिन यह समस्या पीसाइड बाइंडिंग के साथ क्यूटी इंटरैक्टिंग (या बल्कि बातचीत नहीं कर रही) के कचरा संग्रह कार्यान्वयन के संदर्भ में होती है। – Valakyr
यदि आप चयन मॉडल का संदर्भ रखना पसंद नहीं करते हैं तो आप पुराने फैशन सिग्नल वायरिंग सिंटैक्स का उपयोग कर सकते हैं: 'QtCore.QObject.connect (self.server_list.selectionModel(), QtCore.SIGNAL (" currentChanged (QModelIndex, QModelIndex) "), self.server_changed)'। मुझे पता नहीं है कि चयन मॉडल रखते समय कोई जाल है या नहीं। लेकिन मैं 'चयनChanged.connect (self.server_changed) लिखना पसंद करता हूं, जैसा कि आप इसे भी करते हैं। –