同時也在官方論壇提出問題
[https://forum.qt.io/topic/106393/qtvirtualkeyboard-chinese-word-candidate-list-on-embedded-linux/4]
在自己的ARM開發板上移植LINUX以及QT
官方支持的中文虛擬鍵盤,但沒辦法自動查找,匹配文字
注音,倉頡,拼音皆如此,
查看原代碼
qtvirtualkeyboard\src\virtualkeyboard\tcinputmethod.cpp
382 if (inputMode == InputEngine::Zhuyin) {`
383 if (d->zhuyinDictionary.isEmpty()) {
384 QString zhuyinDictionary(qEnvironmentVariable("QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARY"));
385 if (zhuyinDictionary.isEmpty())
386 zhuyinDictionary = QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/tcime/dict_zhuyin.dat";
387 d->zhuyinDictionary.load(zhuyinDictionary);
388 }
389 d->wordDictionary = &d->zhuyinDictionary;
390 }
用了QLibraryInfo::location,是在組建QT時,所使用的-prefix選項,但本該使用相對於開發板上QT庫的位置來讀取這個路徑。
實際上卻在編譯時,指定成了prifix的絕對路徑
所以程序本該讀取 $QT_BASE/prefix/qtvirtualkeyboard/tcime/dict_zhuyin.dat
卻變成讀取/prefix/qtvirtualkeyboard/tcime/dict_zhuyin.dat
可以複製一份檔案到絕對路徑,或是修改源碼
zhuyinDictionary = "你的QT_ROOT資料夾"+ "/qtvirtualkeyboard/tcime/dict_zhuyin.dat";
387
我有事先設置QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARY變量,但沒有作用。
此不算BUG的BUG已經回報,看官方怎麼使吧。
QT對cross compile的支持確實是沒有說得很清楚。