×
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 00:03.
275 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×