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

时间:2015-04-18 21:18:04

标签: qt pyqt qt5 pyqt5

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

Mock-up of buttons with key shortcuts written on them

实现此目的的一种方法似乎是子类QPushButton,覆盖其paintEvent方法,使用QPushButton的绘画,然后使用{{1}绘制它}和QPainter.drawRoundedRect。但是,我是Qt的新手并且有一些问题:

  1. 这是最好的方式吗?
  2. 创建一个"专业人士"小部件,我应该覆盖哪些其他方法? QPainter.drawTextsizeHint,其他一些人?
  3. 如何将minimumSizeHint的文字和图标偏离中心绘制,这样当我在其上绘制关键快捷键时,它的大小是否合适并居中?

1 个答案:

答案 0 :(得分:1)

  

可以在首选字符前面指定快捷键   在文中用&符号。例如:

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

这将使用平台默认方式来指示快捷键的内容。

如果您想要自定义外观和灵活性,最好实现“完整”或称为“专业”小部件。在这两种情况下,使用QtWidgets,您都会手动进行绘画。还要考虑您是否需要自定义或平台本机外观。

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