如何创建一个带有快捷键标签的按钮?
How to create a button with a key shortcut label on it?
我正在为喜欢使用键盘而不是鼠标的人(例如 Emacs 用户)编写 Python 和 PyQt5 程序。我认为某些按钮显示执行其操作的快捷键会很有用,如下所示:
实现此目的的一种方法似乎是子类化 QPushButton
,重写其 paintEvent
方法,使用 QPushButton
的绘画,然后使用 QPainter.drawRoundedRect
在其上绘制和 QPainter.drawText
。但是,我是 Qt 的新手,有一些问题:
- 这是最好的方法吗?
- 要创建一个 "professional" 小部件,我应该覆盖哪些其他方法?
sizeHint
、minimumSizeHint
、还有一些?
- 如何绘制文本和图标偏离中心的
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.
的可用性如何
我正在为喜欢使用键盘而不是鼠标的人(例如 Emacs 用户)编写 Python 和 PyQt5 程序。我认为某些按钮显示执行其操作的快捷键会很有用,如下所示:
实现此目的的一种方法似乎是子类化 QPushButton
,重写其 paintEvent
方法,使用 QPushButton
的绘画,然后使用 QPainter.drawRoundedRect
在其上绘制和 QPainter.drawText
。但是,我是 Qt 的新手,有一些问题:
- 这是最好的方法吗?
- 要创建一个 "professional" 小部件,我应该覆盖哪些其他方法?
sizeHint
、minimumSizeHint
、还有一些? - 如何绘制文本和图标偏离中心的
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.
的可用性如何