临时要做一个qt的项目,所以尽快熟悉qt开发,在这里记录自己的学习过程@ghostyu
安装qtcreator,我用版本是基于qt4.7.0,完整的版本名是:qt-sdk-linux-x86-opensource-2010.05.1,因为我是用于学习qt4.6.3,所以最好选择这个版本的sdk,如果从nokiaqt官网上下的最新班的sdk,编译基于mini2440的qt程序总会出现许多莫名奇妙的问题,解决这些问题是需要时间的,我觉得这个时间浪费的很不值得。
(一)看一个最简单的qt程序:hello.cpp,依旧是helloword
#include <QApplication>
#include <QLabel>
int main(int argc,char * argv[])
{
QApplicationapp(argc,argv);
QLabel*label = new QLabel("helloword,i am ghostyu");
label->show();
returnapp.exec();
}
被hello.cpp新建一个文件夹hello,然后
$cd hello
$qmake -project
这个命令式产生hello的project文件,ls后你会发现,多了一个hello.pro,然后
$qmake hellp.pro
$make
这样就构建好了helloword程序啦
$./hello
运行后出现
qt是如此的灵活,以至于任意窗口部件都可以用作窗口,本例中QLabel作为应用程序的窗口的。
#include <QApplication>
#include <QLabel>
头文件,不用多说
QApplication app(argc,argv);
创建一个QApplication的对象,用来管理应用程序所用到的资源,这个QApplication需要两个参数,分别是argc,argv,因为qt支持它自己的一些命令行参数。
QLabel *label = newQLabel("helloword,i am ghostyu");
创建一个label窗口部件,不用多说,c++执行new操作,在堆中创建的label指针,注意程序中的*label最后并为通过delete销毁,程序退出后,由操作系统收回堆内存。
label->show();
调用显示方法。
return app.exec();
将应用程序的控制权传递给qt,此时,程序会进入时间循环状态,这是一种等待模式,等待用户的动作。
(二)将用户事件与窗口部件建立联系,以相应用户动作
#include <QApplication>
#include <QLabel>
#include <QPushButton>
int main(int argc,char *argv[])
{
QApplicationapp(argc,argv);
QPushButton*button = new QPushButton("quit");
QObject::connect(button,SIGNAL(clicked()),&app,SLOT(quit()));
button->show();
returnapp.exec();
}
$make
$./hello
运行结果如图,单击按钮quit后程序退出。