2010-07-13 12 views
6

मेरे पास QTableView में कुछ एम्बेडेड QComboBox है। उन्हें डिफ़ॉल्ट रूप से दिखाने के लिए मैंने उन इंडेक्स को "लगातार संपादक" बनाया। लेकिन अब जब भी मैं शीर्ष पर माउस स्क्रॉल करता हूं तो वे मेरे वर्तमान टेबल चयन को तोड़ देते हैं।क्यूटी QComboBox के माउस स्क्रॉलिंग को अक्षम कैसे करें?

तो मूल रूप से मैं QComboBox के माउस स्क्रॉलिंग को कैसे अक्षम कर सकता हूं?

उत्तर

2

आप अपने QComboBox पर eventFilter स्थापित करके माउस व्हील स्क्रॉल को अक्षम करें और माउस व्हील, या उपवर्ग QComboBox द्वारा उत्पन्न की घटनाओं पर ध्यान न दें और wheelEvent को फिर से परिभाषित करने के लिए कुछ भी नहीं करने के लिए सक्षम होना चाहिए।

+1

मैंने क्लिक करने के लिए combobox की फोकस नीति भी बदल दी। इससे भी मदद मिली। धन्यवाद! –

+0

लेकिन अगर मैं इसके ऊपर पहिया हूं तो QComboBox अभी भी फोकस किया गया है। क्यूं कर? इसे कैसे रोकें? मैं फोकस अक्षम नहीं करना चाहता हूं बल्कि केवल पहिया पर ध्यान केंद्रित करना चाहता हूं। – 18C

4

QSpinBox या QDoubleSpinBox में आपके साथ ऐसा ही हो सकता है। QSpinBox inside a QScrollArea: How to prevent Spin Box from stealing focus when scrolling? पर आप कोड स्निपेट के साथ समस्या का वास्तव में अच्छा और अच्छी तरह से समझाया गया समाधान ढूंढ सकते हैं।

2

जब मैं करने के लिए (मूल रूप से) एक ही मुद्दा समाधान यह पता लगाने की कोशिश की के रूप में मैं इस सवाल का, पाया: मेरे मामले में मैं pyside में एक QScrollArea में एक QComboBox (अजगर क्यूटी lib) करना चाहते थे।

यहाँ मेरी नए सिरे से परिभाषित QComboBox वर्ग:

#this combo box scrolls only if opend before. 
#if the mouse is over the combobox and the mousewheel is turned, 
# the mousewheel event of the scrollWidget is triggered 
class MyQComboBox(QtGui.QComboBox): 
    def __init__(self, scrollWidget=None, *args, **kwargs): 
     super(MyQComboBox, self).__init__(*args, **kwargs) 
     self.scrollWidget=scrollWidget 
     self.setFocusPolicy(QtCore.Qt.StrongFocus) 

    def wheelEvent(self, *args, **kwargs): 
     if self.hasFocus(): 
      return QtGui.QComboBox.wheelEvent(self, *args, **kwargs) 
     else: 
      return self.scrollWidget.wheelEvent(*args, **kwargs) 

जो इस तरह से प्रतिदेय है:

self.scrollArea = QtGui.QScrollArea(self) 
self.frmScroll = QtGui.QFrame(self.scrollArea) 
cmbOption = MyQComboBox(self.frmScroll) 

यह मूल रूप से emkey08's answerlink Ralph Tandetzky pointed out में है, लेकिन अजगर में इस समय।

+0

यह मेरे लिए 'क्यूस्पिनबॉक्स' के साथ काम करता है ('Qwidgets.QSpinBox' के साथ 'QtGui.QComboBox' को प्रतिस्थापित करें), धन्यवाद! – ElDog

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