0

关于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,而不是编写自己的应用程序。我可以发布指向 KDevelop 文件的链接,但我没有进行其他更改。

4

1 回答 1

0

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

extern void qt_set_sequence_auto_mnemonic(bool);

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

int main(int argc, char ** argv)
{
   qt_set_sequence_auto_mnemonic(true);
   [...]
}
于 2021-12-19T04:15:02.943 回答