【问题标题】:PyQT combobox only react on user interactionPyQT 组合框仅对用户交互作出反应
【发布时间】:2009-04-27 18:55:46
【问题描述】:

我有一个列表框,您可以在其中选择用户。左侧是一个组合框,列出了用户可以放入的可用组。如果用户在一个组中,组合框将自动设置为该组。我想这样做,所以当您更改组选择时,它会将用户移动到该组。我添加了这个连接:

QtCore.QObject.connect(self.GroupsBox, QtCore.SIGNAL("currentIndexChanged(QString)"), self.HandleGrouping)

问题在于,由于我将在不同的组中选择不同的用户,每次我选择一个新用户时,组合框中的默认选项都会更改,Qt 会将其注册为“currentIndexChanged”信号。

似乎没有办法只在用户与小部件本身直接交互时触发信号。我可以使用什么方法来解决这个问题?

【问题讨论】:

    标签: python qt qcombobox


    【解决方案1】:

    从 QComboBox (activated(int index)) 捕获信号,并根据该信号更新所选用户。在您的 Handler 函数中,如果组合框中的选定索引与选定用户所在的组相同,则不要执行任何操作。

    也许将您的组合框移动到用户列表框的右侧,因为您的操作顺序将是选择用户 --> 选择组。

    【讨论】:

    • +1 表示由于操作顺序而发生的变化(以及 activate() 信号)。除非方向是编程某种从右到左的 UI?我想知道其他文化是否会这样做。
    • @Chris Cameron,Qt 可以自动镜像 RTL 语言环境的布局。要自己测试,只需将命令行上的“-reverse”开关传递给任何 Qt 应用程序。
    猜你喜欢
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 2016-10-29
    • 2019-05-23
    相关资源
    最近更新 更多