gpt4 book ai didi

python - QPushButton FocusIn 产生哪个信号?

转载 作者:太空狗 更新时间:2023-10-30 02:50:32 26 4
gpt4 key购买 nike

我正在创建一个小的 PyQt 应用程序并卡在了鼠标悬停效果中。

我有一个 QMainWindow,它有三个按钮,分别是 createProfileButtondownloadPackagesButtoninstallPackagesButton。所有这些都是 QPushButton

类型

现在我已经创建了一个标签,当有人将鼠标悬停在这些按钮上时,该标签将保存文本。我查看了文档并知道可以使用覆盖来处理它

  • focusInEvent(self, QFocusEvent)
  • focusOutEvent(self, QFocusEvent)

按钮的方法。现在这意味着我必须为三个按钮中的每一个扩展 QPushButton,并且每个按钮都必须为一个类的对象。我尝试寻找当鼠标悬停或从按钮上移开时发出的信号,但没有成功。我在网上得到的所有帮助都是实现这两个方法。

扩展一个类并分别创建一个类不是矫枉过正吗?有信号就好了,不幸的是,我找不到任何信号。

所以我检查了整个继承层次结构,没有发现 FocusInFocusOut 的信号

最佳答案

如您所述,此功能不存在任何信号。您有两个基本选择。

选项 1 - 子类:

class FocusEmittingButton(QPushButton):
#...
def focusInEvent(self, event):
# emit your signal

然后您可以在客户端代码中连接到该信号。此外,如有必要,您可以使用设计器的 Promote To 功能将每个按钮提升为 FocusEmittingButton 类型。您只需要子类化一次,然后确保不同的按钮都是同一类型。

选项 2 - 使用 QApplication.focusChanged

您还可以利用 QApplication.focusChanged(oldQWidget, newQWidget)。通过这样做,您将不需要子类化和覆盖焦点事件。相反,您连接到 QApplication.focusChanged 信号,然后在处理程序中响应。

关于python - QPushButton FocusIn 产生哪个信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com