Linux下QT程序无法输入中文

由于fcitx本身存在问题. 在fcitx5中得到解决. 所以最好的方法是直接安装fcitx5.

  • 安装: pacman -S fcitx5 fcitx5-configtool fcitx5-chinese-addons fcitx5-gtk fcitx5-qt boost-libs
  • export 环境变量:
    export XMODIFIERS="@im=fcitx5"
    export XMODIFIER="@im=fcitx5"
    export GTK_IM_MODULE=fcitx5
    export QT_IM_MODULE=fcitx5
    export DefaultIMModule=fcitx5
  • 通过 fcitx5-configtool 配置输入法
  • 启动程序: fcitx5 &
  • 在计算机上, 查找 libfcitxplatforminputcontextplugin.so 库, 将库文件复制到QT安装目录下的 gcc_64/plugins/platforminputcontexts 子目录下
  • libfcitxplatforminputcontextplugin 复制到 /Tools/QtCreator/lib/Qt/plugins/platforminputcontexts 目录下

如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

qtcreator常用快捷键

对编辑工具越熟悉, 开发效率越高. 快捷键则是其中非常重要的一部分. 下面来看一下qtcreator常用的快捷键.

快捷键说明
Ctrl+B编译当前项目
Ctrl+R运行当前项目
Ctrl+I对选择的文字进行缩进
Ctrl+/注释或取消注释
Ctrl+Shift+S保存全部文件
Ctrl+Shift+R光标下关联的符号进行统一修改
Shift+F2函数定义与实现切换
F1光标下的内容显示帮助文档
F2光标下变量定位位置查找或函数定义与实现间切换
F3查找下一个
F4在头文件和源文件间快速切换
F5开始调试
F9设置或取消断点
F10单步执行
F11单步进入

如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

QT信号与槽

QT中的信号与槽是一个比较有用的功能, 主要用于连接不同组件. 通过组件A的事件触发, 执行组件B的槽函数, 实现不同组件间的通信. 代码的一般形式: QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));

使用connect函数时需要注意一下几点:

  • 一个信号可以连接多个槽
  • 多个信号可以连接同一个槽
  • 必须在类中加入 Q_OBJECT 宏定义
  • 信号被触发, 槽函数立刻执行
  • signal 函数的参数应该与 slot 函数的参数保持一致, 至少 signal 函数的参数不能少于 slot 函数参数

如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

QT类关系

mainwindow.h里的Ui::MainWindow是mainwindow.ui生成的ui_mainwindow.h里定义的类, 是窗体元素文件生成的代码. 这里要以class MainWindow区分开来. 我们能够访问窗体文件定义的元素都是通过class MainWindowui成员进行访问的. 明白这一点之后, 就能够将.ui文件定义的窗体元素, 与实际的代码联系起来.

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

QT程序目录结构

在qtcreator中创建一个项目的目录结构如下:

  • HelloWorld.pro为项目管理文件, 里面保存项目文件结构和qt版本等信息.
  • Headers目录保存C++头文件
  • Sources保存C++源文件.
  • widget.ui保存窗体上的文件及其布局的文件

下面来详细介绍一下.pro文件:

# 加入核心图形界面库模块
QT       += core gui

# QT的主版本号超过4, 就添加widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

# 生成可执行文件的名称
TARGET = HelloWorld

# 什么类型的程序, app为图形界面类型的程序
TEMPLATE = app

# 使用过时的库函数时警告
DEFINES += QT_DEPRECATED_WARNINGS

# 源文件
SOURCES += \
        main.cpp \
        mainwindow.cpp

# 头文件
HEADERS += \
        mainwindow.h

# 窗口界面元素文件
FORMS += \
        mainwindow.ui

从上面可以看出, qtcreator项目管理是非常简洁的, 只保存必要的信息. 如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

开始第一个Qt程序

按照惯例, 学习一门新的编程语言, 第一 demo 程序必定是 hello world 程序. 下面就写一个 Qt 的 hello world 程序.

  • 在 qtcreator 中建立一个项目, 并选择项目的类型.
  • 编辑 ui 后缀的布局文件, 添加一个 lable 控件.
  • 编译运行, 完成第一个 Qt 程序的开发

如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

安装 Qt

最近在学习 Qt, 第一步肯定是搭建环境. 因为本人的开发环境是 Linux, 所以此处介绍如何在 Linux 下安装 Qt.

  • 下载程序: Qt 5.9.0 下载页面
  • 赋予程序可执行权限: chmod a+x qt-opensource-linux-x64-5.9.0.run
  • ./qt-opensource-linux-x64-5.9.0.run 运行程序, 按照提示点击安装. 安装资源库可参照下面的截图.

  • 因为编译 Qt 程序需要用到一些外部的工具: GCC, G++, CMake, Make, qmake, GDB, Git. 以上的程序也要安装.

如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.