Ubuntu 20.04下Qt Creator 6.0中文输入终极解决方案(fcitx5实测有效)

Ubuntu下Qtcreator无法输入中文的解决办法 前言 在Ubuntu18 上安装搜狗输入法,启用fcitx输入系统之后Qt Creator 无法输入中文,原因是缺少fcitx的支持库libfcitxplatforminputcontextplugin.so。 解决办法 1 查找是否安装相关库 $ dpkg -L fcitx-frontend-qt5 | grep .so /usr/lib/x86_64-linux-gnu/qt5/p... 阅读详情

Ubuntu 20.04下Qt Creator 6.0中文输入终极解决方案(fcitx5实测有效)

如果你是一名在Ubuntu 20.04 LTS上进行C++/Qt开发的中文用户,并且已经将开发环境升级到了Qt Creator 6.0,那么你很可能正被一个看似微小却极其恼人的问题所困扰:在IDE里无法输入中文。光标闪烁,你敲击键盘,但输入法候选框就是弹不出来,所有的中文都变成了问号或直接消失。这不仅仅是打几个注释的问题,它直接切断了你用母语命名变量、编写文档、与团队沟通注释的流畅性,在需要深度思考和快速编码的企业级开发场景中,这种阻塞感尤为强烈。

网上流传的许多方案,比如简单替换一个.so文件,在Qt Creator 6.0这个基于Qt 6的新版本上,往往以失败告终。错误日志里充斥着“版本不匹配”、“符号未定义”的提示。根本原因在于,Qt 6的底层架构与Qt 5有显著不同,许多为Qt 5编译的输入法插件无法直接兼容。而fcitx5作为新一代输入法框架,其官方仓库为Ubuntu 20.04提供的预编译fcitx5-qt插件,有时也无法完美匹配特定版本组合。因此,我们需要一个更彻底、更可控的解决方案:从源码开始,亲手构建一个与你的Qt Creator 6.0环境严丝合缝的输入法插件。本文将带你走通这条从依赖排查、源码编译、问题调试到一键脚本集成的完整路径,不仅解决输入问题,更让你理解背后的机理,打造一个长期稳定的中文开发环境。

1. 环境诊断与准备工作

在开始任何“手术”之前,我们必须先进行全面的“体检”,明确你系统当前的确切状态。盲目操作只会引入更多混乱。

首先,确认你的核心组件版本。打开终端,逐一执行以下命令:

# 1. 查看Ubuntu系统版本
lsb_release -a

# 2. 查看Qt Creator的详细版本信息
qtcreator --version
# 或者,如果你是通过官方在线安装器安装的,可以进入安装目录查看
# 例如:/opt/Qt/Tools/QtCreator/bin/qtcreator --version

# 3. 查看Qt运行时库版本(关键!)
qmake --version
# 如果上述命令未找到,尝试找到Qt安装路径下的qmake,例如:
# /opt/Qt/6.5.0/gcc_64/bin/qmake --version

请记录下Qt Creator和qmake显示的Qt版本(例如6.5.0)。它们必须一致,插件的编译将严格针对这个Qt版本。

接下来,检查当前的输入法框架。Ubuntu 20.04默认使用IBus,但许多开发者偏爱fcitx5的丰富词库和流畅体验。

# 4. 检查当前正在使用的输入法框架
echo $GTK_IM_MODULE
echo $QT_IM_MODULE
echo $XMODIFIERS

# 5. 检查fcitx5是否已安装及运行
fcitx5 --version
fcitx5-remote # 如果返回0或1,说明fcitx5守护进程在运行

注意:QT_IM_MODULE环境变量应设置为fcitx或fcitx5(取决于你的配置)。如果它是ibus或为空,即使插件编译成功,Qt Creator也可能无法调用fcitx5。

一个常见的误区是只安装了fcitx5主程序,而缺少关键的开发库和Qt集成组件。我们需要确保以下包已安装:

# 安装fcitx5核心、配置工具及必须的开发库
sudo apt update
sudo apt install fcitx5 fcitx5-config-qt fcitx5-frontend-qt5 fcitx5-frontend-qt6 \
fcitx5-module-wayland fcitx5-module-xorg libfcitx5-qt-dev
  • libfcitx5-qt-dev:这是编译fcitx5-qt插件所必需的头文件和链接库,是最关键的依赖。
Ubuntu22-Qt Creator-fcitx-中文输入 将fcitx-qt5-1.2.7/build/qt6/platforminputcontext/libfcitxplatforminputcontextplugin-qt6.so复制到/home/ido/Qt/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/即可。Qt版本:Qt Creator 17.0.0,在关于处查看 base on Qt 6.9.1,所以环境需要安装Qt 6.9.1。系统:Ubuntu 22.04.4 LTS。 阅读详情

相关推荐

Ubuntu20.04下QtCreator中文输入终极解决方案:Fcitx5插件配置全流程

本文详细介绍了在Ubuntu20.04系统中配置Fcitx5插件以实现QtCreator中文输入的完整解决方案。从问题诊断、环境准备到插件配置和系统集成,提供多种技术方案并分析其优缺点,帮助开发者彻底解决Linux下Qt开发的中文输入难题。

melon的博客 989

Ubuntu22.04下QtCreator中文输入终极解决方案:手动编译fcitx-qt5插件全记录

本文详细记录了在Ubuntu 22.04系统中,通过手动编译fcitx-qt5插件,彻底解决Qt Creator中文输入难题的全过程。文章从问题根源分析入手,提供了完整的编译环境准备、源码配置、常见错误解决方案,并涵盖了Qt5与Qt6双版本插件的编译与部署指南,旨在帮助开发者一劳永逸地实现流畅的中文输入体验。

5b6n7m8的博客 764

Ubuntu 22.04下Qt6 Creator中文输入终极指南:fcitx5配置全流程

本文详细介绍了在Ubuntu 22.04下配置Qt6 Creator中文输入的完整流程,重点讲解了fcitx5输入法的安装、Qt6插件的编译与部署,以及常见问题的解决方案。通过图形化操作和命令行结合的方式,帮助开发者彻底解决Qt6开发环境中的中文输入难题。

weixin_33712987的博客 485

Ubuntu 16.04中 Qt 5.6 中无法调用fcitx输入中文的问题

今天在安装了Ubunu后发现在Qt Creator中无法输入中文,这个问题不解决肯真就太难受...了 于是开始百度,找了半天,是了好几种方法,都没能成功 最后参考了这篇博文,找到了灵感http://blog.csdn.net/zyh821351004/article/details/43700699

TSdengdai的博客 2146

Ubuntu20.04中QtCreator5/6中文输入终极解决方案:Fcitx5插件配置指南

本文详细介绍了在Ubuntu 20.04系统中,为QtCreator 5/6配置Fcitx5输入法插件的终极解决方案。针对QtCreator无法输入中文的核心问题,文章提供了从环境确认、插件下载、路径部署到验证调试的完整步骤,帮助开发者一劳永逸地解决中文输入难题,提升开发效率。

weixin_29254029的博客 246

WSL2+Ubuntu 22.04下Qt Creator中文输入法配置全攻略(附Fcitx5避坑指南)

本文详细介绍了在WSL2+Ubuntu 22.04环境下配置Qt Creator中文输入法的完整流程,重点解决Fcitx5输入法在Qt开发环境中的常见问题。通过环境准备、Fcitx5核心安装、Qt插件配置和系统整合四个步骤,帮助开发者彻底解决中文输入难题,提升跨平台开发效率。

weixin_30879169的博客 739

Ubuntu 22.04 Qt Creator 6.8+ 中文输入失效?完整修复 fcitx5 Qt6 插件方案

输入法框架是 Linux 桌面环境用户体验的关键组件,Qt 6 预编译包中移除了第三方输入法插件,导致中文输入候选框无法弹出。理解平台输入上下文插件原理、插件加载路径与环境变量作用机制,能高效定位此类问题。在 Ubuntu 等发行版上,通过源码编译 fcitx5 Qt6 插件、正确设置 GTK/QT_IM_MODULE,可恢复 Qt Creator 及 Qt 应用的正常中文输入。本文梳理完整排查链路,从环境变量、系统 Qt 与手动安装 Qt 的差异,到插件 ABI 匹配与符号链接设置,帮助开发者摆脱“字母直

weixin_33205735的博客 195

WSL2+Ubuntu 22.04搭建Qt开发环境+中文输入法

WSL2+Ubuntu 22.04搭建Qt开发环境+中文输入法 安装 wsl 略 wsl 更新 wsl --update wsl --version wsl --status 我的显示如下, 如果你的版本不是 wsl2 需要改为 wsl2:$ wsl --update 正在安装: 适用于 Linux 的 Windows 子系统 已安装 适用于 Linux 的 Windows 子系统。 $ ...

连城 4621

从GEFCom到UCI:手把手教你构建电力负荷时空预测模型(Python版)

本文详细介绍了如何从GEFCom到UCI数据集构建电力负荷时空预测模型(Python版),涵盖数据集解析、时空特征工程、模型架构设计及工业部署优化。通过多任务图神经网络(MTGNN)实现高精度预测,并结合边缘计算和在线学习机制提升实际应用效果,为能源管理系统提供可靠解决方案。

lambda的博客 813

C# 与 TensorFlow.NET:深度神经网络构建与优化的终极指南

是一个由开源社区维护的 C# 库,它将 TensorFlow 框架的强大功能带到了 C# 开发者的手中。TensorFlow 本身是 Google 开发的一个机器学习框架,广泛应用于深度学习、强化学习等领域。通过 TensorFlow.NET,C# 开发者无需切换语言环境,可以直接在 C# 中构建、训练和优化深度神经网络模型。首先,我们需要定义一个神经网络。该网络将包含输入层、隐藏层和输出层。// 输入张量(XOR 输入,2 个特征)// 输出张量(标签,1 个输出)// 定义第一个隐藏层。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1457

YOLO26改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 359

SAP HANA 中的 Union Node Pruning:让 Calculation View 少走弯路的关键优化

摘要:SAP HANA的Union Node Pruning技术通过在执行前排除无关数据源来优化查询性能。该技术主要采用三种方式:Constant Mapping(适用于规则稳定的场景)、Pruning Configuration Table(灵活性高)和Column-Based Pruning(基于列可用性)。典型应用场景包括分层存储的数据查询,如区分当前和历史销售数据。需要注意的是,当查询发生Unfolding且不含聚合时,Pruning可能失效,此时可通过NO_CALC_VIEW_UNFOLDING提

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 875

JAX/JAXlib GPU 加速版本安装教程(CUDA)

本文介绍了在Windows WSL2+Ubuntu22.04环境下配置JAX/JAXlib GPU加速版本的详细步骤。使用RTX 4060显卡,安装CUDA 12.4和cuDNN 8.9.7驱动,通过Miniconda创建Python 3.9虚拟环境。具体步骤包括:安装Miniconda、配置CUDA环境变量、安装cuDNN驱动、下载并安装JAX/JAXlib。最后通过测试代码验证GPU加速功能,成功检测到GPU并完成矩阵运算。整个过程配有详细命令和截图说明,适合需要搭建JAX GPU开发环境的用户参考。

猿小白的博客 629

第十六章:载板制造工艺大全

本文详细介绍了IC载板制造的完整工艺流程,主要包括开料、钻孔、孔金属化、图形形成、层压、表面处理、成型和电测8大工序。每个工序都列出了关键参数和质量控制要点,如开料尺寸精度±0.1mm、激光钻孔孔径50-150μm、孔金属化铜厚20-30μm、图形形成线宽15μm±2μm等。文中还特别说明了MSAP工艺和沉金等特殊工艺的详细流程,以及成型精度和电测标准等关键指标。全文通过流程图和参数表格直观展示了IC载板制造的核心工艺和质量要求。

Open 185

coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 2670

如何使用 Python 爬取 58 同城招聘信息

职位名称:招聘的岗位名称,如“前端开发”、“数据分析师”等。公司名称:招聘公司的名称。薪资待遇:职位的薪资范围,通常以“面议”、“10k-20k”这样的形式表示。工作地点:公司所在的城市及具体地址。公司福利:例如五险一金、带薪年假、绩效奖金等。发布时间:职位信息的发布时间。一个典型的招聘页面 URL 格式通常如下:在这个页面上,职位信息会分页展示,爬虫需要模拟翻页,获取多个页面的招聘信息。

2201_76125261的博客 1291

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 5分钟搞定Unity与Processing实时画面共享:KlakSpout插件保姆级教程(含常见问题解决)
下一篇: R语言autoReg包实战:5分钟搞定医学研究三线表与森林图(附完整代码)
Python
博客等级 码龄26年 1973粉丝 1567原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值