×
Namespaces

Variants
Actions

Qt for S60使用入门

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

代码示例
源文件: Media:Hello.zip

兼容于
平台:
Symbian

文章
dougcn 在 14 Mar 2009 创建
最后由 hamishwillee 在 08 May 2013 编辑

Needs-update.png本文需要更新: 如果您发现这篇文章有用,请修复下面的问题,然后从文章中删除 {{ArticleNeedsUpdate}} 模板,以消除此警告。

原因: hamishwillee (13 Dec 2011)
Article out of date. Either update to reflect new SDKs and using QML or delete.

  • 适用平台:S60 3rd Edition, S60 5th Edition
  • 设    备:Emulator
  • 类    别:Qt for S60
  • 关 键 字:下压按钮(PushButton), 文本标签(TextLabel), 事件与插槽(Signal and Slot)


Contents

介绍

本文是为想要在Qt for S60环境下开始开发的初学者准备的。在进行下面的步骤之前,请确认Carbide.c++, S60 SDKQt for S60都已正确安装。

新版发行


前提

  • Carbide.c++ 2.0 不会自动定位Qt的安装位置,因此你需要告诉它Qt安装在什么地方。这可以通过下面的环境设置来完成:
  Carbide.c++ preferences: Window > Preferences > Qt > Add...

Qt Preference.PNG

第一步

打开Carbide IDE,然后点击菜单File > New > Qt Project.

Step1.jpg


第二步

屏幕上将打开新的窗口,它将显示可创建的应用程序类型。点击Qt GUI Widget,然后再点击下一步(Next)。

Step2.jpg


第三步

输入项目名称,点击下一步(Next)。

Step3.jpg


第四步

选择项目使用的SDK,然后点击下一步(Next)。

Step4.jpg


第五步

选择模块,点击下一步(Next)。对于我们的例子,直接点下一步(Next),不用选任何额外的模块。

Step5.jpg


第六步

要求输入类名。缺省是应用程序名,点击完成(Finish)继续。

Step6.jpg

在完成这些步骤之后,项目就建好了。几个文件被自动创建,如下面的截图所示:

Step7.jpg

若你的机器上装了多个Qt for S60版本,选择正确的那个,如下:


Properties.JPG

Error creating thumbnail: Image type not supported

引入Qt视图

  • 从下面的路径引入(或打开)Qt视图:
  Carbide.c++ > Windows > Show View > Other... > Qt

QtView.png

  • 视图选择依赖于具体应用程序。然而,至少下面的几个是必须选的:
  1. Qt C++ Widget Box
  2. Qt C++ Property Editor
  3. Qt C++ Signal Slot Editor

添加控件

  • 打开Hello.ui文件,从Qt C++ Widget Box中选择要添加的控件

QtWidgetBox.png

  • 本例中,将添加两个下压按钮和一个文本标签
  • 对象的显示文本可以通过右击对象>Change text...来修改
  • 对象名称更改如下面的截图所示

文本标签

TextLabel.png

Hello 下压按钮

HelloButton.png

Exit 下压按钮

ExitButton.png


为Exit下压按钮实现Signal/Slot机制

  • 打开 Hello.ui.
  • 再打开Qt C++ Signal Slot Editor视图.

QtSignalSlotView.png

  • 点击QtSignalPlus.png来添加一条进行控件事件处理
  • 本例中,我们将处理Exit下压按钮事件
  • 当用户点击Exit下压按钮后程序将结束

发送者

  • exitButton是信号(Signal)的发送者

QtSender.png

信号(Signal)

  • 选择要由exitButton发送的信号clicked().

QtSignal.png

接收者(Receiver)

  • HelloClass是事件处理机制的接收者

QtReceiver.png

插槽(Slot)

  • 插槽(Slot)是exitButton点击clicked()后执行的动作。要从应用程序退出,选择close()。

QtSlot.png


实现Hello下压按钮

  • 本例中,我们通过在文件Hello.h和Hello.cpp中编码来实现Hello按钮事件

头文件

#ifndef HELLO_H
#define HELLO_H
 
#include <QtGui/QWidget>
#include "ui_Hello.h"
 
class Hello : public QWidget
{
Q_OBJECT
 
public:
Hello(QWidget *parent = 0);
~Hello();
 
public slots: //We have added this section to handle "clicked()" event on "helloButton"
void ShowHelloText(); // Fill the label text on clicking "Hello" button
 
private:
Ui::HelloClass ui;
};
 
#endif // HELLO_H

源代码文件

#include "Hello.h"
 
Hello::Hello(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
 
// Signal and slot mechanism for "helloButton"
QObject::connect(ui.helloButton, SIGNAL(clicked()), this, SLOT(ShowHelloText()));
}
 
Hello::~Hello()
{
 
}
 
//We have implemented the following function to display "HelloWorld!!!" text in TextLabel
void Hello::ShowHelloText()
{
ui.label->setText("HelloWorld!!!");
}


输出结果

初始状态

InitialStateEmulator.png

Hello 摁下后的状态

HelloPressedEmulator.png


例子应用程序

  • 解压本例子应用程序: Hello.zip
  • 在Carbide.c++ IDE中从前面减压的应用程序中导入.pro文件:
  Carbide.c++ >> Import >> Qt >> Qt Project >> Hello.pro

反馈

  • 若你在Qt下创建HelloWorld应用程序时碰到任何问题,请在本文的Comment page输入你的反馈。
This page was last modified on 8 May 2013, at 03:03.
214 page views in the last 30 days.
×