Meego Wiki
Views

SDK/Docs/1.1/Creating Hello World

From MeeGo wiki
(Difference between revisions)
Jump to: navigation, search
(Configuring device access in Qt Creator)
(Debugging the project)
Line 107: Line 107:
== Debugging the project ==
== Debugging the project ==
-
=== Prepare the host ===
+
See [[SDK/Docs/1.1/Debugging_with_Qt_Creator]].
-
 
+
-
You will need '''gdb''' to be installed on the host before you can do any debugging with Qt Creator. On Linux, use the package manager to install it;  for example, on Fedora:
+
-
 
+
-
sudo yum install gdb
+
-
 
+
-
=== Configure the Qt Creator project for debugging ===
+
-
 
+
-
First, ensure that debugging is enabled for the version of Qt in use:
+
-
 
+
-
# Click on the ''Projects'' button in the left-hand panel.
+
-
# Under ''General'', click on the ''Manage'' button next to ''Qt Version''.
+
-
# Select the Qt version you are using: use the MeeGo Qt version for your particular target (in this case, '''MeeGo sysroot''').
+
-
# Click on the ''Rebuild'' button next to ''Debugging helpers'' (near the bottom of the dialog box). This builds the debugging helper for this version of Qt. You should see a green tick under the ''Debugging'' column for that Qt version.
+
-
 
+
-
=== Set a breakpoint ===
+
-
 
+
-
Next, you need something to debug. For example, add a ''Push Button'' to the form (defined in <code>mainwindow.ui</code>):
+
-
 
+
-
[[File:Sdk-docs-QtCreator-form-with-push-button.png|800px]]
+
-
 
+
-
Then add a click handler for it, so that when the button is clicked, a message string is assigned into a variable then output to the console. The code looks like this:
+
-
 
+
-
<pre>
+
-
/* file: Sources/main.cpp */
+
-
#include <QtGui/QApplication>
+
-
#include "mainwindow.h"
+
-
 
+
-
int main(int argc, char *argv[])
+
-
{
+
-
    QApplication a(argc, argv);
+
-
    MainWindow w;
+
-
    w.show();
+
-
 
+
-
    return a.exec();
+
-
}
+
-
</pre>
+
-
 
+
-
<pre>
+
-
/* file: Headers/mainwindow.h */
+
-
#ifndef MAINWINDOW_H
+
-
#define MAINWINDOW_H
+
-
 
+
-
#include <QMainWindow>
+
-
 
+
-
namespace Ui {
+
-
    class MainWindow;
+
-
}
+
-
 
+
-
class MainWindow : public QMainWindow
+
-
{
+
-
    Q_OBJECT
+
-
 
+
-
public:
+
-
    explicit MainWindow(QWidget *parent = 0);
+
-
    ~MainWindow();
+
-
 
+
-
private:
+
-
    Ui::MainWindow *ui;
+
-
 
+
-
// our new handler
+
-
private slots:
+
-
    void on_pushButton_clicked();
+
-
};
+
-
 
+
-
#endif // MAINWINDOW_H
+
-
</pre>
+
-
 
+
-
<pre>
+
-
/* file: Sources/mainwindow.cpp */
+
-
#include "mainwindow.h"
+
-
#include "ui_mainwindow.h"
+
-
#include <QDebug>
+
-
#include <QString>
+
-
 
+
-
MainWindow::MainWindow(QWidget *parent) :
+
-
    QMainWindow(parent),
+
-
    ui(new Ui::MainWindow)
+
-
{
+
-
    ui->setupUi(this);
+
-
}
+
-
 
+
-
MainWindow::~MainWindow()
+
-
{
+
-
    delete ui;
+
-
}
+
-
 
+
-
void MainWindow::on_pushButton_clicked()
+
-
{
+
-
    QString message;
+
-
    message = "I have been well and truly clicked";
+
-
    qDebug() << message;
+
-
}
+
-
</pre>
+
-
 
+
-
Most of this is boilerplate generated the project was started, but the <code>MainWindow::on_pushButton_clicked</code> method is new. Notice how it also needs to be defined as a private slot in the header file.
+
-
 
+
-
Add a breakpoint next to the line where you want the debugger to break by clicking in the editor margin. It looks like this:
+
-
 
+
-
[[File:sdk-docs-QtCreator-set-breakpoint.png|800px]]
+
-
 
+
-
(See the red circle on line 22 after <code>message</code> is initialized.)
+
-
 
+
-
To put Qt Creator into debug mode, click on ''Debug''/the bug icon in the left-hand toolbar. This adds some extra panels to the window which are used to show the stack, watch expressions etc.
+
-
 
+
-
Next, you need to change the configuration, so that Qt with debugging enabled is used to run the project.
+
-
 
+
-
# In the left-hand panel, click on ''Projects''.
+
-
# Under ''Build Settings'', select '''Debug''' from the drop-down box next to ''Edit build configuration''.
+
-
# From the ''Build'' menu, select ''Rebuild all''. This recompiles the project using the debug-enabled Qt.
+
-
 
+
-
=== Debug the application on the device ===
+
-
 
+
-
To run the application in debug mode, click on the green arrow with a bug overlaid on it (bottom left). This deploys the application to the remote device and starts it, [[#Running the Hello World|as above]]; however, it also enables you to debug the remote application inside Qt Creator.
+
-
 
+
-
Now, click on the ''Click me!'' button in the application running on the device. The program should pause at the breakpoint. Switch back to Qt Creator and look at the debug panels:
+
-
 
+
-
[[File:sdk-docs-QtCreator-paused-at-breakpoint.png|800px]]
+
-
 
+
-
The application should pause at the breakpoint; and in Qt Creator, the <code>message</code> variable should then be visible in the ''Locals and Watchers'' tab, set to "I have been well and truly clicked".
+
-
 
+
-
For more information about using Qt Creator in debug mode, see http://doc.qt.nokia.com/qtcreator-snapshot/creator-debugging.html.
+

Revision as of 12:48, 29 October 2010


Note: This page is work-in-progress (26 Oct 2010).

This page explains how to create a Hello World application with Qt Creator and run it on a MeeGo device (real or emulated).

Contents

Prerequisites

Creating a Hello World

To create a project:

  1. In Qt Creator, select File > New File or Project.
  2. Select Mobile Qt Application and click Choose....
    Creating your project
  3. Name your project, select where you want to save it, and click Next.
    Note: Make sure that the path to the location does not contain spaces.
    Naming your project
  4. Select MeeGo target and click Next.
    Selecting the MeeGo target
  5. Name the files that will be automatically created for your project.
    Naming classes for your project
  6. If you want to add the project to version control, do so. Otherwise click Finish.
    Adding your project to version control
Your project has now been created.

To create a Hello World application:

For more information on the Hello World created here, see the Qt Mobility Quickstart Example.

1. In Qt Creator, select Edit mode.

2. To view your project files, open Forms, Headers, and Sources folders in Projects sidebar.

3. To create an application that uses the QSystemInfo headers to print out the system's current country code, replace the existing example code in your main.cpp file with the following example code:

#include <QApplication>
#include <QLabel>
#include <QSystemInfo>
using namespace QtMobility;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QSystemInfo s;
    QLabel *label = new QLabel(QObject::tr("hello ").append(s.currentCountryCode()));
    label->show();
    label->resize(100,30);
    return app.exec();
}

4. Replace the corresponding lines in your .pro file with the following System Information API declaration:

CONFIG += mobility
MOBILITY += systeminfo

Do not remove the existing code in the file.

5. In the File menu, select Save All.

Your application is now ready to be configured for building.

To configure your Hello World for building:

  1. Switch to Projects mode.
  2. Click Build Settings.
  3. On Edit build configuration: line, select Add > Using Qt version "MeeGo sysroot".
  4. Change Debug into MeeGo sysroot Release.
    Configuring build settings in Qt Creator
    Your Hello World is now ready to be configured for running in QEMU or your device.

Packaging the Hello World

If you run your Hello World application, an .rpm package is created automatically.

If you want to create a package of your Hello World application without running it, click Build All or select Build > Build Project "<project name>".

Compile Output view shows the message "Package created." and an .rpm package file (<project name>-<project version>-<release version>.<device architecture>.rpm) has been created in the build-specific project subdirectory ("<project name>-build-meego").

Configuring device access in Qt Creator

The process is slightly different, depending on whether you are deploying to a real device or an emulated one.

However, in both cases, the mode of access is the same: Qt Creator will deploy and install an RPM on the device, then run its executable.

Running the Hello World

To run your Hello World on your device:

  1. Switch to Projects mode.
  2. Click Run Settings.
  3. In Device configuration drop-down menu, select the device configuration you created when configuring device access.
    Qt Creator run settings mobility.png
  4. Click Run.
    Your Hello World runs on your device.

Here's an example of the application running on a netbook:

Sdk-docs-helloworld-on-netbook.png

Debugging the project

See SDK/Docs/1.1/Debugging_with_Qt_Creator.

Personal tools