原文:http://hi.baidu.com/ajian1453/blog/item/411889df064f23c938012f3f.html
习惯了windows下的基于GUI的应用程序开发,突然想想linux下该如何开发一个图形应用程序呢?查了查资料,发现QT是个好东西,于是迫不及待的在ubuntu8.04下试了试。
首先呢, 先找到一个教程, 照着教程试试:
http://www.qiliang.net/qt/tutorial1-01.html
不得不说, 这个教程很不错, 讲解比较细致,也容易懂。
接着,开始自己敲代码:
$ mkdir HelloWorld
$ cd HelloWorld
$ vi HelloWorld.cpp
代码内容如下:
// HelloWorld.cpp
#include <qapplication.h>
#include <qpushbutton.h>
int main(int argc, char** argv)
{
QApplication a(argc, argv);
QPushButton hello("Hello World!", 0);
hello.resize(300, 130);
a.setMainWidget(&hello);
hello.show();
return a.exec();
}
代码什么意思我也不说了, 如果你熟悉windows下的图形界面开发, 你会发现这些代码非常容易懂, 而且上面的教程里面对每句代码有很好的解释。
代码敲完了, 开始该编译了吧:
$ qmake -project
令人沮丧的是, 居然不认识qmake,不过有提示:
The program 'qmake' can be found in the following packages:
* libqt4-dev
* qt3-dev-tools
看看上面的提示, 似乎libqt4-dev这个版本比较新呀, 于是作为首先的安装对象:
$ sudo apt-get install libqt4-dev
哇, 速度还真不错, 5分钟就搞定了
重新编译:
$ qmake -project
$ qmake
$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o HelloWorld.o HelloWorld.cpp
HelloWorld.cpp: In function ‘int main(int, char**)’:
HelloWorld.cpp:9: error: ‘class QApplication’ has no member named ‘setMainWidget’
make: *** [HelloWorld.o] Error 1
郁闷呀, 前面2步没问题, 又出问题了, 不过, 不要慌, 看看错误提示先:
HelloWorld.cpp:9: error: ‘class QApplication’ has no member named ‘setMainWidget’
这句似乎比较能说明问题了, 没有这个成员函数, 怎么办? google吧, g.cn回车, 查一查,终于找到问题所在了:
http://www.gidforums.com/t-13690.html
呵呵, 原来是版本的问题, setMainWidget是Qt3的,而在Qt4中,这个函数已经过时了,
于是,For an immediate fix, you can define QT3_SUPPORT:
//
// Define QT3_SUPPORT before including any qt headers
//
#define QT3_SUPPORT
#include <qapplication.h>
#include <qpushbutton.h>
好,加上
#define QT3_SUPPORT
然后重新编译, 哈哈, 成功编译, 发现HelloWorld目录下面多了一些文件, 其中有一个绿色的
HelloWorld, 我想这个应该就是可执行文件了吧, 先不管, 执行一把:
$ ./HelloWorld
哈哈, 爽, 终于出来了:
兴奋一下, 于是写成上文,关于QT编程进一步的知识, 完全可以照着上面的教程去实际操作一下。
下面这篇文章:
http://blog.chinaunix.net/u2/60529/showart_1111263.html
也是一篇入门文章, 看看演练一下也不错。
从上面的例子来看, 这种写法似乎很熟悉, MFC? 呵呵, 好像是的哟, 如果你对MFC很熟悉, 然后网上找一些教程以及查看一下QT的相关文档如:
http://doc.trolltech.com/4.1/classes.html
我想写一些一般的GUI应用程序应该是不成问题的。