如何向 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()
添加的
我正在使用 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()
添加的