解决debian Qt6/Qt5编译的程序fcitx无法输入中文

参考博客: https://blog.51cto.com/u_15127574/3697131
在我的debian11上编译的Qt程序无法用fcitx(搜狗输入法)输入中文。
看了别人的博客,需要一个fcitx5-qt的包,源代码仓库:https://github.com/fcitx/fcitx5

网上也没找到现成的包可以用,只能自己编译。

这里给一个我编译好的Qt6、Qt5的包:https://github.com/sixsixQAQ/fcitx5-qt

如果在你的系统不能用,可能是因为不兼容,请尝试自己编译。

使用

把那个libfcitx5platforminputcontextplugin.so放到下面的路径:

<你的Qt安装目录>/gcc_64/plugins/platforminputcontexts/

比如我的Qt6,放置路径就是:

/opt/qt/6.3.1/gcc_64/plugins/platforminputcontexts/

然后设置权限755即可。

chmod 755 libfcitx5platforminputcontextplugin.so

重新构建你的Qt程序,就能用fcitx输入中文了。
(我装的fcitx,用的搜狗输入法)

编译

我们需要安装一个fcitx5-qt的包,github可找到源代码。

下载源代码后进入

git clone https://github.com/fcitx/fcitx5-qt.git
cd fcitx5-qt

每个人的环境多少都会有点不一样,下面给出我遇到的问题和解决过程。

第1次构建,失败

尝试第一次构建

mkdir build && cd build
cmake ../

第一次报错,应该会提示你缺少Fctix5Utils
用apt搜一下看

$ apt search Fcitx5Utils
libfcitx5utils-dev - Fcitx Input Method Framework v5 (utils library dev files)
libfcitx5utils2 - Fcitx Input Method Framework v5 (utils library)

我们安装第一个dev的开发包:

apt install libfcitx5utils-dev

第2次构建,失败

然后回到我们的build目录,先清下缓存再构建

rm -rf *
cmake ../

结果应该又会报错,个人情况不同,根据报错提示,我们打开顶级CMakeLists.txt看看它的逻辑(需要学一点CMake):

$vim ../CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(fcitx5-qt VERSION 5.0.15)
set(FCITX5_QT_VERSION ${PROJECT_VERSION})

set(REQUIRED_QT4_VERSION 4.8.0)
set(REQUIRED_QT5_VERSION 5.1.0)
set(REQUIRED_QT6_VERSION 6.0.0)

find_package(ECM 1.4.0 REQUIRED)

set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

option(ENABLE_QT4 "Enable Qt 4" Off)
option(ENABLE_QT5 "Enable Qt 5" Off)
option(ENABLE_QT6 "Enable Qt 6" ON)
option(BUILD_ONLY_PLUGIN "Build only plugin" ON)
option(BUILD_STATIC_PLUGIN "Build plugin as static" Off)
option(WITH_FCITX_PLUGIN_NAME "Enable plugin name with fcitx" On)
......
  • 意思是Qt6、Qt5、Qt4是可选构建的,不需要的就把它改成OFF,否则就会构建,然而比如你要构建Qt4,但是却没装Qt4,那就无法构建。我只装了Qt6,所以这里只开启Qt6。
  • 下面还有个BUILD_ONLY_PLUGIN选项,要打开,设置成ON。
  • 注意到还有个BUILD_STAIC_PLUGIN选项,由于不开它也能编译,就先不动了。

第3次构建,失败

设定好需要的选项后,再次清下缓存,开始构建:

rm -rf *
build ../

结果又报错,提示找不到Qt6Config.cmake(Qt4、Qt5同理),按照那个提示,设定环境变量CMAKE_PREFIX_PATH为你的Qt按照路径。

export CMAKE_PREFIX_PATH="/software/lib/qt/6.3.1/gcc_64"

第4次构建,成功

清下缓存再构建,编译成功了。

rm -rf *
cmake ../
cmake --build .

看提示进到编译结果目录,里面有个libfcitx5platforminputcontextplugin.so,这就是我们要的。
在这里插入图片描述

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
在arm64架构的Debian系统上使用Qt进行音频播放的基本步骤如下: 1. 首先,确保你的系统已经安装了Qt开发环境和必要的音频库。你可以使用apt-get命令来安装它们: ``` sudo apt-get install qt5-default libqt5multimedia5 libqt5multimedia5-plugins libqt5multimedia5-examples ``` 2. 创建一个Qt项目,可以使用Qt Creator创建一个新的Qt Quick Application。在项目设置中,确保你选择了正确的编译器和配置。 3. 在你的Qt项目中添加一个音频播放控件,可以使用Qt Multimedia模块提供的QMediaPlayer类。你可以在Qt Creator的设计器中拖放一个QMediaPlayer组件到你的窗口中,或者在代码中创建它。 ```cpp // 创建一个QMediaPlayer对象 QMediaPlayer* mediaPlayer = new QMediaPlayer(this); // 设置要播放的音频文件 mediaPlayer->setMedia(QUrl::fromLocalFile("/path/to/audio/file.mp3")); ``` 4. 设置音频播放相关的控制和属性。你可以使用QMediaPlayer提供的接口来控制音量、播放状态和其他属性。 ```cpp // 设置音量 mediaPlayer->setVolume(50); // 播放音频 mediaPlayer->play(); // 暂停播放 mediaPlayer->pause(); // 停止播放 mediaPlayer->stop(); ``` 5. 处理音频播放的信号。QMediaPlayer会发出一些信号,如stateChanged()、positionChanged()和durationChanged(),你可以连接这些信号来处理播放状态的变化或其他操作。 ```cpp connect(mediaPlayer, &QMediaPlayer::stateChanged, [=](QMediaPlayer::State newState){ // 处理播放状态变化的逻辑 }); ``` 6. 编译和运行你的项目。你可以在Qt Creator的构建设置中选择适合你的arm64平台进行编译,并在设备上运行你的应用程序。 以上是在arm64 Debian系统上使用Qt进行音频播放的基本步骤。你可以进一步探索Qt Multimedia模块的文档和示例来实现更复杂的音频播放功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

barbyQAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值