如何创建一个带有快捷键标签的按钮?

How to create a button with a key shortcut label on it?

我正在为喜欢使用键盘而不是鼠标的人(例如 Emacs 用户)编写 Python 和 PyQt5 程序。我认为某些按钮显示执行其操作的快捷键会很有用,如下所示:

实现此目的的一种方法似乎是子类化 QPushButton,重写其 paintEvent 方法,使用 QPushButton 的绘画,然后使用 QPainter.drawRoundedRect 在其上绘制和 QPainter.drawText。但是,我是 Qt 的新手,有一些问题:

  1. 这是最好的方法吗?
  2. 要创建一个 "professional" 小部件,我应该覆盖哪些其他方法? sizeHintminimumSizeHint、还有一些?
  3. 如何绘制文本和图标偏离中心的 QPushButton,以便当我在其上绘制快捷键时,它的大小正确且居中?

A shortcut key can be specified by preceding the preferred character with an ampersand in the text. For example:

QPushButton *button = new QPushButton("&Download", this);

这将使用平台默认方式来指示快捷键是什么。

如果您想要自定义外观和灵活性,最好实施 "complete" 或您称之为 "professional" 小部件。在这两种情况下,对于 QtWidgets,您都只能手动进行绘制。还要考虑您是想要自定义外观还是平台原生外观。

自定义 UI 的最佳解决方案是离开 QtWidget 堆栈并使用 QtQuick2。但我不确定 Python.

的可用性如何