Example 3.1 shows a simple main program that creates a QApplication and a QLabel, manipulates some QStrings, and then pops up a graphical window.
This example makes use of Qt's QString class, which is a dynamic string implementation that supports the Unicode standard.[1] QString contains many helpful member functions for converting and formatting strings in different ways. This example also makes use of QTextStream, a very flexible Qt class that can provide a well-developed stream interface for reading or writing text to various objects (e.g., text files, strings, and byte arrays).
[1] http://www.unicode.org/standard/standard.html
Example 3.1. src/qapp/main.cpp
#include #include #include #include #include #include int main(int argc, char * argv[]) { QApplication myapp(argc, argv); <-- 1 QWidget wid; <-- 2 qDebug() << "sizeof widget: " << sizeof(wid) << " sizeof qapplication: " << sizeof(myapp) ; QString message; QTextStream buf(&message); <-- 3 buf << "A QWdget is " << sizeof(wid) << " bytes. A QObject is " << sizeof(QObject) << " bytes. A QApplication is " << sizeof(myapp) << " bytes."; qDebug() << message; QLabel label(message); <-- 4 label.show(); <-- 5 return myapp.exec(); <-- 6 };
|
To build this app, we need a project file. A project file describes the project by listing all of the other files, as well as all of the options and file locations that are needed to build the project. Because this is a very simple application, the project file is also simple, as shown in Example 3.2.
Example 3.2. src/qapp/qapp.pro
TEMPLATE = app SOURCES += main.cpp |
The first line, TEMPLATE = app, indicates that qmake should start with a templated Makefile suited for building applications. If this project file were for a library, you would see TEMPLATE = lib to indicate that a Makefile library template should be used instead. A third possibility is that we might have our source code distributed among several subdirectories, each having its own project file. In such a case we might see TEMPLATE = subdirs in the project file located in the parent directory, which would cause a Makefile to be produced in the parent directory and also in each subdirectory.
Part I: Introduction to C++ and Qt 4
C++ Introduction
Classes
Introduction to Qt
Lists
Functions
Inheritance and Polymorphism
Part II: Higher-Level Programming
Libraries
Introduction to Design Patterns
QObject
Generics and Containers
Qt GUI Widgets
Concurrency
Validation and Regular Expressions
Parsing XML
Meta Objects, Properties, and Reflective Programming
More Design Patterns
Models and Views
Qt SQL Classes
Part III: C++ Language Reference
Types and Expressions
Scope and Storage Class
Statements and Control Structures
Memory Access
Chapter Summary
Inheritance in Detail
Miscellaneous Topics
Part IV: Programming Assignments
MP3 Jukebox Assignments
Part V: Appendices
MP3 Jukebox Assignments
Bibliography
MP3 Jukebox Assignments