Как вызвать 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, а не пишу собственное приложение. Я могу размещать ссылки на файлы KDevelop, но других изменений я не делал.

1 ответ

Вы можете объявить функцию, поместив это в начало вашего файла .cpp (возможно, сразу после #includes):

      extern void qt_set_sequence_auto_mnemonic(bool);

... это сообщит вашему компилятору, что функция существует, поэтому код позже в том же файле .cpp может вызывать ее, не вызывая ошибки времени компиляции, например:

      int main(int argc, char ** argv)
{
   qt_set_sequence_auto_mnemonic(true);
   [...]
}
Другие вопросы по тегам