Qt是一个跨平台的C++开发库,设计思想是同样的C++代码无需修改就可以在Windows,Linux,Mac OS等平台上使用。Qt原来是Trolltech公司的,后来被Nokia收购了。现在Qt已经可以开发Nokia智能移动终端的app应用程序了。今天我们介绍如何搭建Qt开发环境以及如何开发基于Nokia智能移动终端上的app应用程序。
1.
在http://qt.nokia.com/downloads下载相应的Qt版本,我的是Linux/X11 32位的离线安装包Qt SDK 1.2.1,共764MB。安装Qt之前请确保磁盘至少有5G的剩余空间。
2.
下载下来的是一个setup安装包,直接安装就可以。如下图:
选择Qt安装目录(强烈建议保持默认!):
点击Install开始安装:
安装完成后如下所示:
打开Qt,如下图:
3.
下面我们新建一个HelloWorld,它即可以在桌面OS上运行,也可以在Nokia手机上运行:
打开Qt,选择“文件–>新建文件或工程”,选择”Qt Quick项目–>Qt Quick应用程序”,如下图:
在项目介绍和位置中输入路径:
在“Qt Quick应用类型”中选择第一项:仅限内置元素(全平台):
在目标设置中,选择前两项:桌面和Qt模拟器,最后一项Harmattan是Meego平台的,我们不需要:
这样,helloworld就新建完成了。
4.
点击Qt右下角,有两个Target,一个是Qt模拟器的,一个是桌面的,先选择Qt模拟器:
5.
然后按下面的绿色三角,开始运行,之后就会弹出Nokia手机模拟器,打开的速度很快,比Android模拟器快多了:
右边是模拟器的控制窗口,可以控制模拟器,包括手机型号,网络,传感器等
6.
然后我们选择第二个Target:桌面,用同样的方法运行:
注意:我没有修改任何代码,就可以运行在手机和桌面平台上了,因此说Qt是跨平台的
7.
下面我们以《C++ GUI Qt 4 编程(第二版)》【下载见 http://www.linuxidc.com/Linux/2012-06/61979.htm 】一书的第一章的三个例子,介绍一下Qt编程(代码和Qt的helloworld自带的代码有较大出入,我还需要好好研究研究):
为了方便,我们不新建工程了,就在Hello World的main.cpp中修改:
第一个例子:hello
将main.cpp修改如下:
- #include <QApplication>
- #include <QLabel>
程序很简单,就是显示一个Label
模拟器中的运行结果:
桌面运行结果:
第二个例子:quit
将main.cpp修改如下:
- #include <QApplication>
- #include <QPushButton>
-
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QPushButton *button = new QPushButton(“Quit”);
- QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));
- button->show();
-
- return app.exec();
- }
按一下Quit按钮,程序就退出了。
模拟器中的运行结果:
桌面运行结果:
第三个例子:age
将main.cpp修改如下:
- #include <QApplication>
- #include <QHBoxLayout>
- #include <QSlider>
- #include <QSpinBox>
-
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
-
- QWidget *window = new QWidget;
- window->setWindowTitle(“Enter Your Age”);
-
- QSpinBox *spinBox = new QSpinBox;
- QSlider *slider = new QSlider(Qt::Horizontal);
- spinBox->setRange(0, 130);
- slider->setRange(0, 130);
-
- QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
- QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
- spinBox->setValue(35);
-
- QHBoxLayout *layout = new QHBoxLayout;
- layout->addWidget(spinBox);
- layout->addWidget(slider);
- window->setLayout(layout);
-
- window->show();
-
- return app.exec();
- }
拖动滑块,左边的文本框会显示滑块当前值
模拟器中的运行结果:
桌面运行结果:
完成!