《KDE2/Qt编程金典》第二章:创建并显示一个窗口——2.2 一个关于KDE的简单例子:Hello KDE
下面的例子和前面的关于Qt的例子很相似,只不过它是基于KApplication对象编写的,而不是基于QApplication对象。因为QApplication是KApplication类的基础,所以两个程序没有根本上的不同,只是KDE增加了一些工具,例如风格和主题、使用KDE部件的能力、处理标准KDE配置、处理阶段管理信息、启动用户的网络浏览器和电子邮件客户端的能力等。
1 /* hellokde.cpp */
2 #include <kapp.h>
3 #include <qlabel.h>
4 #include <qstring.h>
5
6 int main(int argc, char **argv)
7 {
8 KApplication app(argc, argv, "hellokde");
9 QLabel *label = new QLabel(NULL);
10 QString string("Hello, KDE");
11 label->setText(string);
12 label->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
13 label->setGeometry(0, 0, 180, 75);
15 label->show();
16 app.setMainWidget(label);
17 return(app.exec());
18 }
KApplication对象是在程序第2行包含的头文件kapp.h中定义的。kapp.h文件包含了qapplication.h文件,因此每个Qt程序可使用的工具同样在KDE程序中也可使用。在第3行和第4行包含的头文件含有QLabel类和QString类的定义。
在第8行创建了KApplication对象,将命令行参数和用于应用程序的一个名字传递给了此对象。这个名字将被用于程序专用的任务,如定位图标、接收消息以及阅读配置信息等。
因为这个例程中使用了KDE对象,所以必须要包含存有此对象定义的KDE库。有一些专用的KDE库,主要的两个是libkdecore和libkdeui。
INCL= -I$(QTDIR)/include -I$(KDEDIR)/include
CFLAGS= -O2 -fno-strength-reduce
LFLAGS= -L$(QTDIR)/lib -L$(KDEDIR)/lib -L/usr/X11R6/lib
LIBS= -lkdecore -lkdeui -lqt -lX11 -lXext -ldl
CC=g++
hellokde: hellokde.o
$(CC) $(LFLAGS) -o hellokde hellokde.o $(LIBS)
hellokde.o: hellokde.cpp
clean:
rm -f hellokde
rm -f hellokde.o
.SUFFIXES: .cpp
.cpp.o:
$(CC) -c $(CFLAGS) $(INCL) -o $@ $<
LIBS定义表明包含了库libkdecore.a,这个库中包含了KDE的核心功能;也包含了库libkdeui.a,此库包含了所有的KDE部件。KDE内部通过动态调用ODBC驱动器实现ODBC,由此,还需要包含库libdl.a。KDE安装时把这些库放在默认的目录下,这样不需要对LFLAGS增加新的搜索路径。