第十七章 用Qt进行KDE编程

Qt 是用 C++ 语言编写的, C++ 也是编写 QT/KDE 程序的标准语言。


KDE 和 Qt 简介

KDE (K桌面环境)是一个基于 QT GUI 库的开源桌面环境。 KDE 中包含了大量的应用程序和工具。

QT 是一个用 C++ 编写的、成熟的、跨平台的 GUI 工具包。其开发公司为自由软件社区提供了一个免费的版本。

安装 QT

书本使用的版本是 QT3 ,这在 CentOS7 上可以这样安装:

sudo yum -y install qt3
sudo yum -y install qt3-devel

如果是使用 Ubuntu 18.04 ,那么我安装的方法是:

先下载一个源码包(qt-x11-free_3.3.8-b.orig.tar.gz):https://download.qt.io/archive/qt/3/

然后:

su -
cd /usr/local
tar zxvf qt-x11-free_3.3.8-b.orig.tar.gz
cd qt-x11-free-3.3.8b/
./configure
make

编译好后,把目录名字改一下:

cd ..
mv qt-x11-free-3.3.8b/ qt-3.3

然后设置程序的头文件目录以及链接目录和链接库。

其余的方式见书本。

编译程序的时候,需要引入 qt 的头文件目录,和链接 qt 库:

# 书中的例子
$ g++ -o qt1 qt1.cpp -I$QTDIR/include -L$QTDIR/lib -lqui

信号和槽

信号和信号处理是 GUI 应用程序用来响应用户的主要机制。 QT 的信号处理机制由信号( signal )和槽( slot )构成。

QT 定义了两个伪关键字( signal 和 slot )来标识代码中类的信号和槽。这意味着代码必须经过一个单独的预-预处理阶段( pre-pre processing ),来搜索这些伪关键字并用额外的C++代码对它们进行替换。

信号和槽还有一些使用限制,但不是很严重:

通过 QObject::connect 方法将信号连接到槽。

QLayout 提供了排列构件和布局的方法。其子类 QVBoxLayout 和 QHBoxLayout 分别以垂直和水平的方向包含其他构件和布局。

使用 QBoxLayout::addWidget 和 QBoxLayout::addLayout 完成这个功能。