【发布时间】:2011-08-11 06:33:59
【问题描述】:
pyqt4 组合框中的下拉菜单是否有回调或事件?就像self.connect(self.ui.combobox,SIGNAL("activated(int)"),self.refresh
【问题讨论】:
-
您的意思是显示下拉菜单时发出的信号?即,当用户点击组合框时?
-
是的,当用户点击组合框时。
pyqt4 组合框中的下拉菜单是否有回调或事件?就像self.connect(self.ui.combobox,SIGNAL("activated(int)"),self.refresh
【问题讨论】:
QCombobox 使用 QAbstractItemView(默认为 QListView)来显示下拉项目(可通过 view() 属性访问)。
我不知道有任何用于此目的的信号。
但是您可以通过在组合框的视图上使用installEventFilter 并实现eventFilter 方法来设置一个事件过滤器来解决问题:
from PyQt4 import QtCore, QtGui
class ShowEventFilter(QtCore.QObject):
def eventFilter(self, filteredObj, event):
if event.type() == QtCore.QEvent.Show:
print "Popup Showed !"
# do whatever you want
return QtCore.QObject.eventFilter(self, filteredObj, event)
if __name__ == '__main__':
app = QtGui.QApplication([])
cb = QtGui.QComboBox()
cb.addItems(['a', 'b', 'c'])
eventFilter = ShowEventFilter()
cb.view().installEventFilter(eventFilter)
cb.show()
app.exec_()
【讨论】:
也许你可以试试
customContextMenuRequested(const QPoint &pos)
信号(继承自 QWidget)?
【讨论】: