如何向 QSpinBox 的默认上下文菜单添加操作?

How to add an action to the default context menu of a QSpinBox?

我正在使用 Qt 5.7 (C++),并希望向 QSpinBox(以及 QDoubleSpinBox 和其他一些输入小部件)添加自定义功能,例如重置选项。应该可以通过上下文菜单访问此功能。但是我不想替换默认的上下文菜单。相反,我想在现有操作的顶部或下方添加我的自定义操作。

我找到了与这个问题几乎匹配的答案:

但是,这些对我的情况没有帮助,因为它依赖于 Widget 具有创建和 returns 标准上下文菜单(如 QLineEdit::createStandardContextMenu())的方法。旋转框没有这样的方法。

我也尝试采用廉价的方式直接从源代码(https://github.com/qt/qtbase/blob/5.7/src/widgets/widgets/qabstractspinbox.cpp 第 1249 行)复制创建默认选项的代码。这也不是很令人满意,因为它使用了底层行编辑的私有成员。

是否有一种(标准)方法来重用和扩充 Q(Double)SpinBox 或任何 QWidget 的默认上下文菜单?还是我必须手动重新实现默认行为?

https://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/widgets/qabstractspinbox.cpp#n1315

是的,我们似乎没有任何简单的“钩子”来自定义它(如果您愿意,可以提出功能请求); OTOH 不需要复制那么多代码,因为大多数菜单项都是由 QLineEdit::createStandardContextMenu()

添加的