如何调用qt_sequence_no_mnemonics?

How to call qt_sequence_no_mnemonics?

关于 qt_sequence_no_mnemonics(),qt 文档说“此函数未在任何 Qt 的头文件中声明。要在您的应用程序中使用它,请在调用它之前声明函数原型。”

但这意味着什么?我只看到在未分发的 cpp 文件中声明了此函数。我如何声明该函数,以便我可以调用它?

当我调用它时,它是在 QKeySequence 的 实例 上吗?它是静态的吗?有人可以帮助我理解该文档的含义吗?

文件在这里:https://code.woboq.org/qt5/qtbase/src/gui/kernel/qkeysequence.cpp.html

编辑 1:我尝试删除 QKeySequence 的每个导入,并将其隔离在执行此操作的新文件后面:

struct Configure
{
    Configure()
    {
//      Qt::qt_set_sequence_auto_mnemonic( false );
//      QKeySequence::qt_set_sequence_auto_mnemonic( false );
        qt_set_sequence_auto_mnemonic( false );
    }
};

Configure   configure;

但这并没有导致删除由全局菜单创建的快捷方式冲突。 MenuBar 菜单仍然定义了“助记符”,它们仍然会破坏应用程序。

仅供参考 - 我正在尝试修改 KDevelop,而不是编写我自己的应用程序。我可以 post 链接到 KDevelop 文件,但我没有做其他更改。

您可以通过将其放在 .cpp 文件的顶部附近来声明该函数(可能就在 #includes 之后):

extern void qt_set_sequence_auto_mnemonic(bool);

... 这将告诉您的编译器该函数存在,以便稍后在同一个 .cpp 文件中的代码可以调用它而不会产生编译时错误,例如:

int main(int argc, char ** argv)
{
   qt_set_sequence_auto_mnemonic(true);
   [...]
}