You are on page 1of 27

Bi s 6

Lp trnh nn tng QT

Lp trnh nhng ARM-Linux

162

Mc tiu bi hc s 6
Sau khi kt thc b{i hc n{y, sinh vin c th
Nm c c|c vn c bn, c trng ca nn
tng Qt
C{i t Qt Creator (Qt SDK) trn m|y ph|t trin
(Ubuntu)
L{m quen vi lp trnh ng dng giao din ha
s dng nn tng Qt
C{i t Qt Everywhere ph|t trin ng dng cho
nn tng Arm Embedded Linux

Lp trnh nhng ARM-Linux

163

Ni dung bi hc
6.1. Gii thiu QT
6.2. C{i t mi trng ph|t trin Qt
6.3. L{m quen vi lp trnh QT
6.4. C{i t Qt Everywhere (Qt Embedded)

Lp trnh nhng ARM-Linux

164

6.1. Gii thiu Qt


Qt Development Frameworks c s|ng lp nm 1994
bi TrollTech
2008: TrollTech s|p nhp v{o Nokia
Qt l{ mt Framework ph|t trin ng dng a nn tng
(desktop, mobile, embedded).
H tr c|c nn tng: Windows, Linux, Embedded
Linux, Win CE, Symbian, Maemo

Lp trnh nhng ARM-Linux

165

Gii thiu QT
Qt cho php vit ng dng mt ln v{ bin dch cho
trn nhiu nn tng h iu h{nh khc nhau m khng
phi vit li m~. Tuy nhin, m~ ngun cn c bin
dch trn nn tng m{ mun ng dng c thc thi.
Lp trnh Qt theo chun C++.

Lp trnh nhng ARM-Linux

166

Gii thiu QT
Qt Framework bao gm:
a cross-platform class library (Th vin c|c lp hng
i tng)
integrated development tools (C|c cng c ph|t trin
tch hp)
a cross-platform IDE. (Mi trng ph|t trin ng dng)

Tham kho: qt.nokia.com; qtcentre.org

Lp trnh nhng ARM-Linux

167

QT c s dng rng ri

Lp trnh nhng ARM-Linux

168

Kin trc Qt

Lp trnh nhng ARM-Linux

169

6.2. Ci t Qt SDK
C{i t Qt SDK trn m|y ph|t trin (Linux,
Windows, MacOS)
File c{i t
qt-sdk-linux-x86-opensource-2010.05.1.bin
(http://qt.nokia.com/downloads)
Thc thi file c{i t:
$ ./qt-sdk-linux-x86-opensource-2010.05.1.bin
i qu| trnh c{i t din ra th{nh cng, mc nh
th mc c{i t cha ti
$HOME/qtsdk-2010.01/qt/bin
Lp trnh nhng ARM-Linux

170

Ci t Qt SDK
Sau khi c{i t xong Qt SDK, cng c Qt Creator cho
php ph|t trin ng dng vi la chn mc nh
bin dch trn m|y tnh Linux. bin dch cho
ng dng thc thi trn KIT FriendlyArm
(Embedded Linux) cn c{i t Qt Everywhere

Lp trnh nhng ARM-Linux

171

6.3. Lm quen vi lp trnh QT

S dng mi trng ph|t trin Qt Creator (IDE)


Chng trnh HelloQt
C ch Signals/Slot
Qun l layout

Lp trnh nhng ARM-Linux

172

Mi trng pht trin Qt Creator IDE

Lp trnh nhng ARM-Linux

173

Cc thnh phn Qt Creator

Lp trnh nhng ARM-Linux

174

Cc iu khin (widgets) c bn

QLabel
QPushButton
QLineEdit
QTextEdit
QSpinBox
QComboBox
Qslider
V.v

Lp trnh nhng ARM-Linux

175

Chng trnh HelloQt


To project HelloQt
Trong file main.c b sung on m~:
Bin dch, chy chng trnh:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
return app.exec();
}

Lp trnh nhng ARM-Linux

176

Chng trnh HelloQt


Gii thch ?
Sa on m~ vi HTML style
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//QLabel *label = new QLabel("Hello Qt!");
QLabel *label = new QLabel("<h2><i>Hello</i> "
"<font color=red>Qt!</font></h2>");
label->show();
return app.exec();
}

Lp trnh nhng ARM-Linux

177

C ch signals - slot
C ch event handler
X l c|c s kin (s kin tng t|c ngi dng,
s kin ca h thng)
Cho php to c|c kt ni (connections) gia s
kin (signals) vi h{m x l (slot)
C 2 c|ch to:
To t ng (wizard)
To bng tay (manual, hand-code)

Lp trnh nhng ARM-Linux

178

Minh ha c ch signals/slot
To bng code (dng phng thc Qobject::connect)

Lp trnh nhng ARM-Linux

179

Minh ha c ch Signals/Slot
To bng code
connect(sender, SIGNAL(signal), receiver, SLOT(slot));

Trong : sender, receiver l{ con tr Qobjects,


signal v{ slot l{ c|c tn h{m khng c tham s.
Cc macro SIGNAL() v SLOT() bin i tham s
thnh string.
VD: ng b gia 2 iu khin slider v{ spinBox

Lp trnh nhng ARM-Linux

180

Minh ha c ch Signals/Slot
To t ng (wizard): chut phi v{o i tng mun
x l s kin, chn Go to slot, tm slot l{ h{m x l s
kin tng ng mun dng.
V d x l s kin nt bm (QPushButton)

Lp trnh nhng ARM-Linux

181

Qun l layout trong ng dng Qt


K thut lay out: Cho php sp xp c|c iu khin
(widgets) trn mt form. Kch thc v{ v tr s
thay i linh hot khi form thay i kch thc.
C c|c kiu lay out:

Horizontal lay out


Vertical lay out
Grid lay out
Form lay out

Lp trnh nhng ARM-Linux

182

Chng trnh TextFinder


X}y dng ng dng TextFinder

Lp trnh nhng ARM-Linux

183

Qt Documentations
Documentation in Qt Assistant (or QtCreator)
Qts examples
Qt developer network:
http://developer.qt.nokia.com/

Qt Center Forum:
http://www.qtcentre.org

Lp trnh nhng ARM-Linux

184

6.4. Ci t Qt Everywhere
Bc 1: Ci t QT Embedded (QT Everywhere)
(Xem hng dn chi tit km theo)
Bc 2: Copy cc file th vin cn thit xung KIT
3 th vin quan trng (VD: copy xung th mc
/opt/qte/lib)
libQtCore.so.4
libQtGui.so.4
libQtNetwork.so.4

Copy cc fonts vo th mc /opt/qte/lib/fonts

Bc 3: Chnh file cu hnh /etc/init.d/rcS, tt Qtopia


trnh tranh chp
Lp trnh nhng ARM-Linux

185

Cu hnh trnh dch Qmake cho Kit


Bc 4: To cu hnh bin dch cho Mini2440, tr
ti Qmake ~ bin dch c trn

Lp trnh nhng ARM-Linux

186

Cu hnh trnh dch Qmake cho Kit


Bc 5: Dch chng trnh QT cho KIT
Chn ng b bin dch Qmake cho QT Embedded

Lp trnh nhng ARM-Linux

187

Tho lun

Lp trnh nhng ARM-Linux

188

You might also like