首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pyqt4 table表格怎么用事件过滤器 让点击表格单元格才有效 而不是在表格周围就会被触发呢?

pyqt4 table表格怎么用事件过滤器 让点击表格单元格才有效 而不是在表格周围就会被触发呢?

提问于 2019-11-07 09:32:26
回答 0关注 0查看 263
代码语言:javascript
复制
from PyQt4 import QtCore, QtGui
class QueueManagerScreen(QtGui.QDialog):
    def __init__(self, parent=None):
        super(QueueManagerScreen, self).__init__(parent)
        self.createItems()
        self.currentTable=[]
        
    def createItems(self):
        self.queue_area1 = QtGui.QTabWidget() 
        self.queue_area1.setMovable(True)
        tab_bar = tabBar(self)
        self.queue_area1.setTabBar(tab_bar)
        self.tab = Widget(self)
        self.tab.snaddr="00"
        self.tab.spaddr="00"
        self.OutLayout=QtGui.QHBoxLayout()
        self.Label=QtGui.QGroupBox(u"布局")
        self.table = self.QueueTableNormal()###表格
        self.TabLayout = QtGui.QGridLayout()
        self.TabLayout.addWidget(self.table,0,0,1,1)
        self.Label.setLayout(self.TabLayout)
        self.OutLayout.addWidget(self.Label)
        self.currentTable.append(self.table)
        self.table.update()
        self.tab.setLayout(self.OutLayout)
        self.queue_area1.insertTab(0, self.tab, u'屏1')
        self.queue_area1.setStyleSheet("QTabWidget::tab-bar{alignment:left;border:1px solid red}") 
        
    def QueueTableNormal(self):#表格
        QTableWidget=QtGui.QTableWidget()
        QTableWidget.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
        QTableWidget.horizontalScrollBar().setContextMenuPolicy(QtCore.Qt.NoContextMenu)
        QTableWidget.verticalScrollBar().setContextMenuPolicy(QtCore.Qt.NoContextMenu)
        QTableWidget.setColumnCount(1)
        QTableWidget.setRowCount(1)
        # QTableWidget.setMouseTracking(True)
        QTableWidget.installEventFilter(self)##安装事件过滤
        QTableWidget.setStyleSheet("QTableWidget::item:selected{border:1px solid #1E90FF; background-color:transparent} " )
        return QTableWidget  
         
   def eventFilter(self, obj, event):##想通过事件过滤只有左点击表格内单元格才能生效
        if obj == self.table:
            if event.type() == QtCore.QEvent.MouseButtonPress and event.mouse() == QtCore.Qt.LeftButton:
                self.close()
                return True
        return QtCore.QObject.eventFilter(self, obj, event) 
          
   def mousePressEvent(self, mouseEvent):
        self.currentTable[self.tableidx].mousePressEvent(mouseEvent)
        if mouseEvent.button() == QtCore.Qt.RightButton:
            print('右点击')
        elif mouseEvent.button() == QtCore.Qt.LeftButton:
            print('左点击 ')           

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档