Как вызвать 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);
[...]
}