3

您好我正在尝试使用 QComboBox 填充可以在服务器上找到的数据库列表。

QComboBox 上是否有任何信号可用于将其连接到可以在用户单击 QComboBox 时填充 QComboBox 的方法。

我正在尝试创建一个对话框,该对话框使用用户通常在 Windows 环境中创建数据库连接的方式,允许他们指定服务器名称、用户名和密码,然后当他们单击“选择数据库”组合框时从服务器检索数据库列表,他们可以从列表中选择一个。

在继承自 QComboBox 的自定义类中重新实现 mousePressEvent 是获得此功能所必需的吗?

4

1 回答 1

3

您可以使用事件过滤器来捕获 mousepress 事件。

最小的例子:

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()


        self.combo = QtGui.QComboBox(self)
        self.combo.installEventFilter(self)
        self.show()

    def eventFilter(self,target,event):
        if target == self.combo and event.type() == QtCore.QEvent.MouseButtonPress:
            print "Button press"
            self.fillComboBox()

        return False

    def fillComboBox(self):
        self.combo.addItem('foo')
        self.combo.addItem('bar')
于 2014-02-24T20:53:13.530 回答