我使用一个简单的UbuntuLTS16.04VM为我的一个项目创建一个AppImage。我为此创建了一个极简的静态Qt,这样AppImage的大小就尽可能小了。最近,我使用以下配置选项构建了一个静态QT5.14.2:
../configure -prefix ~/Qt/5.14.2_static -opensource -confirm-license -release -static -optimize-size -no-opengl -no-gif -no-ico -no-libjpeg -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtxmlpatterns -nomake examples -nomake tests -nomake tools -qt-zlib -sql-sqlite -qt-sqlite -qt-libpng -qt-pcre -qt-xcb然而,我注意到,构建我的程序和AppImage是可行的,但是死键不起作用。我在这里使用德语语言,按重音键什么也不做。例如,当我将一个´和一个e输入到QLineEdit中时,我只是得到一个e而不是é。
我最初认为这是由于vm中缺少了一些东西,但是当我在Gentoo主机上执行相同的Qt构建时(在Qt程序中一直使用死键),我得到的结果是相同的:死键不能工作。所以很可能,这是因为配置错误。
我试验了-libinput、-xkb、-xkbcommon和-qt-harfbuzz配置开关,但我无法获得工作的死键。
在构建Qt时必须设置哪些配置选项,这样死键才能正常工作?
编辑:当我使用这个精确的配置语句构建Qt时,但是共享版本而不是静态版本时,死键可以工作。是什么导致了这一切?
发布于 2022-05-12 16:34:48
这是由于缺少QTPLUGIN参数而发生的。这几乎是不可能找到的,但很容易解决:
将QTPLUGIN += composeplatforminputcontextplugin添加到.pro文件中就可以了。Q_IMPORT_PLUGIN(QComposePlatformInputContextPlugin)自动出现在project_plugin_import.cpp中。
这样做,死键就会像预期的那样在静态构建中工作。
https://stackoverflow.com/questions/61444320
复制相似问题