Hello World - Linux上的 MeeGo x86 开发

来源:互联网 发布:java io与nio的区别 编辑:程序博客网 时间:2024/06/03 00:43

介绍         
        这个教程介绍了Linux下的 MeeGo x86 开发。教程解说了基本的开发流程,重点介绍了如何使用SDK附带的那些工具。
教程不会涉及一些开发细节,例如 Qt 和 MeeGo 的 API、或是如何将程序整合到 MeeGo 环境中。
如何开发 (简要说明)

  • 获取并安装 MeeGo SDK
  • 进入 MeeGo SDK 环境
  • 启动模拟器
  • 启动 Qt Creator
  • 使用 Qt Creator 创建一个项目, 配置项目的 DISPLAY 环境变量,让项目能够在模拟器中运行
  • 使用 SDK 的 Qt 库编译项目。
  • 在模拟器中运行程序
  • 在模拟器中为程序 Debug

如果你有一台真实的 MeeGo 设备:

  • 准备设备
  • 在设备上运行程序
  • 在设备上为程序 Debug

如何开发 (详细说明  
在你的机器上安装 MeeGo SDK
        请参阅在 Linux 上使用 MeeGo SDK的介绍。
使用 Qt Creator 创建项目
        让 startmeego 脚本继续运行,然后启动 Qt Creator :

  1. qtcreator &
复制代码

这会在 host 上运行 Qt Creator (而不是在 Xephyr 里)
Simulator_QtCreator_splash.png


然后,配置一个新项目:

  • 创建一个新项目(File > New File or Project)。 在 Projects 对话框中, 选择 Qt Gui Application ,然后点击 OK
  • 输入 helloworld 作为项目名称,选择一个保存项目的目录 (例如,如果你使用 root 账户工作的话,可以选择 /root )。 然后点击 Next
  • 保持 Class Information 对话框的默认配置,然后点击 Next
  • Project Management 对话框里,点击 Finish

输入一些代码:

  • 打开 Forms 目录,双击 mainwindow.ui 打开图形窗体编辑器。
  • 从窗体编辑器左边的组件列表里,拖出一个 label ,放到编辑中的窗体上。
  • 修改 label 的文本( "Hello world" 是个不错的选择 )。
  • 再拽几个你喜欢的东西上去。

然后配置项目:

  • 点击 Qt Creator 窗口左边的 Projects 图标。
  • 配置 Qt 版本:
    • Build Settings > General 栏里,点击 More 按钮。这会显示当前项目中使用的 Qt 库版本。
    • 点击 Qt Version 标签边上的 Manage 按钮,这会显示 Qt Versions 面板:
      Simulator_QtCreator_qt_versions.png
    • 选中 Qt in PATH 项目。
    • 点击 Rebuild 按钮,创建当前 Qt 版本使用的 Debugging Helper
    • 点击 OK 保存设置。
  • 确认 Qt Version 的设置,应该是 Default Qt Version (Qt in PATH)
  • 然后,配置运行环境,用模拟器来显示运行的程序:
    • 点击 Run Settings 标签。
    • 点击 Run Environment 下面的 More 按钮。
    • 双击 Display 环境变量边上的文本区,将 :0.0 改为 :2 。这会让 Qt Creator 使用 :2 号显示区域来运行程序,也就是在  Xephyr 中运行。

在模拟器中运行程序
        现在你已经做好了运行程序的准备。
        在 Qt Creator 里,点击左下角那个大大的绿色箭头,就可以运行程序。在第一次运行时,这会编译整个项目(使用你设置的 Qt 库版本),然后在 :2 号 display (也就是 Xephyr 里的 MeeGo 模拟器)上显示程序。
在模拟器里,程序可能会在后台运行,不会直接显示在屏幕上。这时你可以需要点击 MyZone 图标激活程序:
Simulator_running_meego_app.png



在模拟器中为程序 Debug         在 Qt Creator 里启动程序后,如果你激活了 Debug 模式,你就可以监视这个程序的运行状态。在之前的 小节 里,我们已经为当前版本的 Qt 库创建了 debugging helper 。这必须预先做好,不然你无法调试程序。
点击左边工具栏中的 bug 图标,这会激活 Qt Creator 的 Debug 模式。这会在窗口里增加一个面板,以显示运行栈、变量和表达式的值、以及其他有用的信息。
然后,你需要一些 Bug 好进行 debug。我在程序窗体里添加了一个 Push Button
QtCreator_form_with_push_button.png



然后为这个按钮添加了点击事件。当点击这个按钮时,一个字符串变量将会被打印到控制台上。代码是这样的:

  1. /* file: Headers/mainwindow.h */
  2. #ifndef MAINWINDOW_H
  3. #define MAINWINDOW_H
  4. #include <QMainWindow>
  5. namespace Ui {
  6.     class MainWindow;
  7. }
  8. class MainWindow : public QMainWindow {
  9.     Q_OBJECT
  10. public:
  11.     explicit MainWindow(QWidget *parent = 0);
  12.     ~MainWindow();
  13. protected:
  14.     void changeEvent(QEvent *e);
  15. private:
  16.     Ui::MainWindow *ui;
  17. private slots:
  18.     void on_pushButton_clicked();
  19. };
  20. #endif // MAINWINDOW_H
  21. /* file: Sources/mainwindow.cpp */
  22. #include "mainwindow.h"
  23. #include "ui_mainwindow.h"
  24. #include <QDebug>
  25. #include <QString>
  26. MainWindow::MainWindow(QWidget *parent) :
  27.     QMainWindow(parent),
  28.     ui(new Ui::MainWindow)
  29. {
  30.     ui->setupUi(this);
  31. }
  32. MainWindow::~MainWindow()
  33. {
  34.     delete ui;
  35. }
  36. void MainWindow::changeEvent(QEvent *e)
  37. {
  38.     QMainWindow::changeEvent(e);
  39.     switch (e->type()) {
  40.     case QEvent::LanguageChange:
  41.         ui->retranslateUi(this);
  42.         break;
  43.     default:
  44.         break;
  45.     }
  46. }
  47. void MainWindow::on_pushButton_clicked()
  48. {
  49.     QString message;
  50.     message = "I have been well and truly clicked";
  51.     qDebug() << message;
  52. }
复制代码

大部分代码继承自原本的项目,只有 MainWindow  ::  on_pushButton_clicked 这个方法是我自己添加的。需要注意的是,我还在头文件里定义了一个私有的槽。译者注:信号和槽是 Qt 里的概念,请参考介绍 Qt 的文章。
然后在编辑器里,在你想要 debug 的语句左边点击一下,添加一个断点。看起来像是这样:

QtCreator_set_breakpoint.png


(注意 34 行左边的那个红色圆圈)
然后点击那个带着 bug 标志的绿色箭头(在左下角),这会以 Debug 模式启动程序。程序将会显示在模拟器中:

QtCreator_app_with_button.png


现在,在模拟器里的程序窗口中,点击那个 Push Button ,这会在刚才设置的断点上中断程序。回到 Qt Creator 里,看下 debug 面板:
QtCreator_paused_at_breakpoint.png


我们可以看到,在 Locals and Watchers 标签里, message 变量的值,已经被设置为 "I have been well and truly clicked" 了。

原创粉丝点击