Mobile Apps with Qt: Rui's Page

From CSclasswiki
Jump to: navigation, search

General Info

This Special Studies aims to develop an App on iOS platform with Qt5. I plan to develop a French grammar dictionary so that users can easily search grammar they need with the App. The trickiest part is how to design an organized structure of complicated French grammar and determine which way to store, fetch, and display all information.

Qt5 Exploration

1/24 ~ 1/31

  • Installed Qt Creator and got familiar with its functionality
  • Explored Qt with two tutorials

2/1 ~ 2/7

  • Explored two apps on Qt
  • Designed a simple interface of the potential App -- French Grammar Dictionary


Module1.png


C++ LAB & HW

Solution Page

2/8 ~ 2/14

  • Followed the demo to create a debug window at the bottom of the GUI
  • Started doing lab & hw of CSC112

2/15 ~ 2/25

  • Continued CSC112 LAB & HW
  • Note: The biggest difference and also hardest part of C++ is to figure out how to use pointers. This tutorial gives a good explanation. I found it's very helpful!

2/26 ~ 3/4

Pushing Apps Into iOS Devices

3/5 ~ 3/11

  • Followed these two tutorials to generate iOS simulators and pushed apps into iPhone. Simulator worked well but pushing apps didn't work out.
  • Note:
    • It was tricky to get the Apple Developer's License, iOS Certificate and Provisioning Profile(visible in Xcode) to work together.
    • Requesting a Provisioning Profile didn't work out through Xcode. Xuan and I found that we could manually make one Provisioning Profile and upload it to Xcode. We downloaded an iOS Certificate from Developer Member Center, uploaded it to Keychain Access(installed in Mac), manually made a Provisioning Profile, uploaded it to Xcode and then waited for approval of the supervisor. After Dominique approved our request, we uploaded the Provisioning Profile to Xcode. It worked out!

3/12 ~ 3/25

- Spring Break -

  • I tried organizing the structure of some grammar with Qt TreeWidget and pushed the app into my iPhone. Here are snapshots from my phone.


Photo.png


Photo2.png


Organizing Dictionary in HTML Pages

3/26 ~ 4/1

  • Wrote several web pages to figure out the general structure of the grammar dictionary
  • Catalog of the dictionary

4/2 ~ 4/8

  • Followed the following tutorial and wrote another version of the app to access web pages through Qt Widgets
    • QWebView accessed and displayed the web pages I created.
    • Refer to code


  • Note: For some reason, neither iPhoneSimulator nor iPhone-clang on Qt worked (Qt is always tricky...) so I tried the desktop version.


Catalog.png


Page1.png


Page2.png


Page3.png


Qt Quick & QML Games

4/9 ~ 4/15

  • Followed the tutorial to get familiar with Qt Quick and QML.
    • It turned out that this tutorial didn't work well probably because it was made for Qt4.7.
    • This tutorial(5-in-a-row game) gave a general idea of structures of qml and its interaction with C++.

4/16 ~ 4/22

  • Continued 5-in-a-row game and found two problems here:
    • This game was made for Qt 4.7 so there were several packages not present in Qt5 any more.
    • I could't find the direct interaction between qml files and C++ files. C++ files were not imported into QML files. I was confused about how QML and C++ worked together.
  • Here are snapshots of the incomplete game:


Game1.png


Game2.png


4/23 ~ 4/29

  • Explored another Qt5 QML game (Samegame), followed the steps and ran the game. Got following results:


Samegame1.png


Samegame2.png


Samegame3.png


  • This game was written in JavaScript instead of C++ but it's still a good tutorial that clearly illustrates the interaction between QML files and JavaScript/C++ files.
    • I would compare this interaction with MVC pattern. Modules are implemented in JavaScript/C++ whereas Viewer and Controller (mostly GUI part) are implemented in QML.

Last Week

4/30 ~ 5/9

  • Continued Samegame
  • Kept researching useful tutorials for Qt Quick & QML
    • This tutorial gave a wonderful explanation of QML at an intro level.


    • A fabulous series of videos about programming with Qt Quick (6 parts)


  • Organized Wikipage

Resources & Tutorials