Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
1,37 MB
Nội dung
Bài 14. TìmhiểuvàsửdụngQtđểviếtchươngtrìnhtạomộtcửasổ chương
trình điển hình.
!"#$$$"#"
% !"#$#"&'(
!" #$%&'(
)*
+,-./01234567.5.-*89,2
301:;+5.<=5>?=@A+B56,-CD:DE
3FGH,IJ*K=59+7=5LCDM/NOCC4-P565Q
%CE7LRST@.M=56:UMVNWNX8X@H5<<Q56MY
35QN7QN9C.C>CZ=5[,-<QMY37
N9C.CC4%C\*K/].C4^=+=5_56Q
]=2N`a76*[=<Q+CD5Q%N9C.C
C4@%<MY=5U-7:D>`^=+[=bN/VN
C_>5_MY=7=2IE9N/CZ-:DC_>=N/C=VNWN
C47I=*
+7H=7,-CD)ST7V56,AN7-==Dc-!7Md
%CeC-!f-QM=*T,AN75=9QM=+*
+5_56I=C=,4cgC"##hALD5D+--,C4-
=g7V=*+a767VC47,AN7=@S==:=MH@
7=NMi
QCU:A^=+7H=7:=>C
• 7MMjN,=d7C@<<Q47C?5.-!=@X0@kGM*
• <H0jH75lN*
• ma76CH7FCH7,-CD==HH7-<Q,AN756IH@
-0-IH7V=J*
• !N`nP\oo-K[=IEN/7/:V2CDI/
N`-5QG,=-MY3<*
))*/.
,I-,IM=51Npp]jN7qH*7pG,=M-/.:/`6N5.
--7r*
)))*-5e
-5e+7H=77V-*[=b9?sH0t-L56I<4
0*
)*4+7H=7-4CD235/*
[=MuCQvI%2:/.+:;4CD23HN=5
/MY3oo-CEj5kH+*[=MY3+7H=7)ST-+
SHMH75Q47=vB,*
9[=MY3+7H=75Q47=CDN7qHd,H9%*=5<@MY
3+SHMH75QbMY=d,H=L5Q4CD23bMY=
g:/-CD[V7CDY=MU7C-@CD=E3@CDGH
I*<,-CD23+5/*\@[=CL
23:;47=-5DCZ-,d,H*
')*+,-+./0+/,12
+74CDN7qHC7+7H=756a76:ZCDGw=7F7AMxJ
:4c:*kw=7Muy=AN-5e9%c,4N7qH
3Q-47=N7qH[=*
Q4N7qHHN=@?f,HzHGf,H787qHz{NN,=Mz+{NN,=z
MH@-,-CH^=Gw=7*7DN4,=MM)d7C=@|,N,-
HN=-?+C=kG,-,NMZ*
kw=7+{NN,=47=CDN7qH<2=CDM7Hd,H-CDM\d,H05r
CD=LFHN=GHJ
HN=*N7 N7qHd,H*
C=*NNjd,H>`23*
HN=*NNjd,H>^=,NHN=^=HN=GH*
HN=*jd,HH=H7^=,NHN=HN=GH*
HN=*j=LHN=GH*
%)3+4-0/56/
kw=747=54C_M=-d,HC=*NN
#include "notepad.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Notepad w;
w.show();
return a.exec();
}
m=B59I=:d,HH=H7HN=GH-+{NN,=*
SB&5rx=-CC=Hoo23*
SB}47=CD5\6+{NN,=*\6-]/,~23-9%5Q
4:VI•7+-MY3+kHM*<IZ4CD5\623
=7=CM\47=7*F\23=C-IEMY3+
kH@=<QMY3+{NN,==%*J
SB€47=5\6HN=*1,-5\6C-Gw=747=,N-AN
=*=L2=%\r56?,-GHFA3J
7+*`3,-GHHH0@=D@_@-[7=*!DGHP
<Q2=GHI@CDDN4eCDY=MU23`•4*
SBhQrGHHN=7C-7CDY=MU7*GHP<
2g2=F`3CD+!=kG@75<<=E3@CH@=74
@-CD-GHIJ@<QQrCDGHV7CDY=MU7*
kH56Ce5r,-IEV‚-CMGFJ,-CGH7=*
SB$#[NICD23+5=4@MI5647=-Y5%
GH^=23*`3^=MI,-D-VN`C*
()787$!1+29 !:;2< !
kw=747=CD5rx==L75r4ƒ!X@HN=**R
[=CZd,HHN=*7+7H=7@<Mu5DCZ7+SHMH7*
R:,23@+7H=747:r=LF+„MH7)H7d=H
CN,H7jJ@5?d,H*-47=CDd,HH=H7oo2…HN=**
=)3>2? !@A/B! /-
kw=747=CD23MY3CD+!=kG*<<M:\7`7C-[=
<QCCD=CH@GHI@=E3@-CD=74*R
71C<Q,-:VI•,4GH-*
[=_MY3+SHMH75QCCD5\6+H0T-CD5\6
+8MK-Y=MU`*R[=|g:/7GHH0H@<A56
MIVN`C-N/2:;5Cg:/*[MuI†23
HN=IV*F<x=,-@VNDJ*
QCGH7+SHMH7
7%5D+7H=7T7@:VC5[N-d,HHN=*787qHM5QIZ5D
d,H7+SHMH7*
RW-/GHM=51-C-
• H0TF+H0TJ
• 8MKF+8MKJ
R`5[N-GH8MK-|+*
7Y=MUD`@=5U7r^=:qH=CH-]K*
V7,o{FeCo{J5Q?GH-:VC-X=H7=,,Fe
V7,oXJ5Q:\7`H.?F+K0X=J*
V7,oFe7,oJ5Q,=5U*
=L:1L7EM=7+SHMH7
[=<Q0HCd,Hƒ!X5647=77:rC_
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Notepad</class>
<widget class="QMainWindow" name="Notepad">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Notepad</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>70</x>
<y>0</y>
<width>268</width>
<height>235</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTextEdit" name="textEdit"/>
</item>
<item>
<widget class="QPushButton" name="quitButton">
<property name="text">
<string>Quit</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
")56/+/,12/12/-
kw=747=CDd,HH=H7,NHN=< ‡,H@ CDM77@ CD
HM77@-5\6„*f,HM=
#ifndef NOTEPAD_H
#define NOTEPAD_H
#include <QMainWindow>
namespace Ui {
class Notepad;
}
class Notepad : public QMainWindow
{
Q_OBJECT
public:
explicit Notepad(QWidget *parent = 0);
~Notepad();
private:
Ui::Notepad *ui;
};
#endif // NOTEPAD_H
SB&,H+!=kGVNCDY=MU23`*
SB}5rx=,NHN=7=CHMN=H„@5<,-=CHMN=HO,N„)
47=cd,H*:;,*
SB$#2=C=7+…ˆK‰T*<0V5975rx=,N@-:\
,N^==CD+ˆ:qH*@<PN/I%c=c+ˆ:qH*!D+ˆ:qH
<CCDM\I/gMCD,NooO*[~,-@,N-M,<
Q567V47jCH*P<Q7V,4=CM\^=CDM,-?<*
SB$Š5rx=CDM77<CD=CM\Ce5r56?,-N=7H*7r#
b7=7;GHIE<N=7HF<,-CDGHVN=VJ*
SB$}5rx=CDHM77/5Q/N<:D5_56MY3:Z5\
67B5L^=<*H]5e^=oo@-C^<,N
C-<56I=:@:y59:;CDV_F‹J*7+ˆ:qH@-C^/,-5Q5/C
:/7;-C^^=,N0V56?5[ICD5\6560<=E]=
CD7†5%,NMZ*
SB$'I=:CD:%-,-CD7†5%,NHN=„)*!D:%-
yCD,N3Q@-<Q%NAV/N2^=<*
C)+/,123+4-0/56/
7Hd,HC-Gw=747=,NHN=M=
#include "notepad.h"
#include "ui_notepad.h"
Notepad::Notepad(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Notepad)
{
ui->setupUi(this);
}
Notepad::~Notepad()
{
delete ui;
Œ
m=B59,Hd,HH=H7,NHN=5_5647=:ZGw=7-d,H
H=H7„)5_5647=:Z,*
SB&5rx=M77HN=-%,ANd,H„)*
SBŠ?M77+!=kG,-,NMZ,NHN=*
SB}47=CD5\6,N„)-<-*
SBh%,AN„)*
SB$$^*
D)-+./056/
kw=747=N7qHd,HHN=*N7[=M=
#
#
# Project created by QtCreator 2013-04-21T21:08:50
#
#
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Notepad
TEMPLATE = app
SOURCES += main.cpp\
notepad.cpp
HEADERS += notepad.h
FORMS += notepad.ui
87qHd,Hb5r23-C]C=IH5QMY3;C47=N7qH@P
M7Hd,H@H=H7d,H@-„)d,H2=7N7qH*
[=P<QMY3?]C=IH•M N7qH5Q4d,H*N7*!e@7
7L6N5<@N/CB+oŽGHM5Qd,H5647=,I%,4+kHM
!,H*
E)F$:G !0 !:;2< !
K1L[=<CD=L@<IEM,-C565.
v`@<b2=CDH0H-CD[V@PCDM\-CO5Q
@†-CZ7D23*Q,-C237Zv`@[=Mu:UM
CL-<*9@[=MuC2g-[V*
%NH@[=Mu:UMC-C5Q/CDd,H-H0H-5Q,D
^=H0H-CDd,H*
F$H I
m9%\5.IQC-<ONWNL
I†23*@7`3-[=MY3-C:/-5QC?=
,-C%-5Q<QCL-23*Q,-C5.-@[=
CCDM,I%\+:*
QI†23I[+56V@=MY3`+-%M,*
!D`56N7=ICDMI5e:0/7=-CDM,,-CD-C56?,-
5Q5N2CD`3Q*kH+5_05r7`-M,C-[=
<QMY37%Nc+SHMH7*
Y3+SHMH75QCCDM,-C@I`DN/-[+5QCZ
CD75v/-M=5<?M,z,IHFJ*
!DM,N7=H@…]K…,IHFJ@ 56 C-d,HH=H7 ^=,NHN=
GH@HN=*-CD-CN7=H@HN=…]K…,IHFJ@56C-
M7Hd,H^=,NHN=GH@HN=*NN*[=b9%C_5Q-C
7M7Hd,H*
[=_-C_5_56MY=5U7H=H7d,H@HN=*
#ifndef NOTEPAD_H
#define NOTEPAD_H
#include <QMainWindow>
namespace Ui {
class Notepad;
}
class Notepad : public QMainWindow
{
Q_OBJECT
public:
explicit Notepad(QWidget *parent = 0);
~Notepad();
private slots:
void on_quitButton_clicked();
private:
Ui::Notepad *ui;
};
#endif // NOTEPAD_H
SB$&MY3`^=+-%M,5Q23I[+56V*
+SHMH7MY3+!H=ˆ:qH=jHd=,HM5QI%\5QI%\`
:•M,IHFJ5%CDM,7,NHN=*,5D47=C_7-C
HN„FJ^=DN45Q,-C5.-@A+SHMH7b9I=:@CD
M,CDO*
C_27M7Hd,H@HN=*NN@M=
void Notepad::on_quitButton_clicked()
{
Œ
!_05r-CN7=H56I+8MKN`,IHFJ*
K1L[=:UMH5QM,]FJ^=+{NN,=HN=
void Notepad::on_quitButton_clicked()
{
qApp->quit();
Œ
J)F$00/$$/ 4
EL@7CDY=MU`@CDM,56?:;.GH*`3
HCCH-[7=E3*Q,-C5.--@+VN
+{@<Q567=CDM\GH@-5_56I%\CDM,*`3@/
+!H-+,K=7<Q47=HCCH-[E3c+{*
QCQMY3<`-M,@[=MuCHCCH5QCZ
-,-,-I%\[-M,*
[...]... đây, chúng ta sửdụngQt Designer để thêm các widget vào giao diện người dùng Wizard tạo ra một ứng dụng với một QMenu widget, với chữ Type Here để giữ chỗ cho menu và các item menu Kích đúp vào text để nhập tên cho menu File, item Open và item Save Qt Designer tự động tạo ra các hành động thích hợp Để kết nối các hành động vào các slot, kích chuột phải vào một hành động và chọn Go to... Build Project Notepad để build và chạy ứng dụngQt Creator sử dụng qmake và make đểtạo ra mộtchương trình thực thi trong thư mục xác định trong thiết lập build của dự án và chạy nó 13 Build và chạy từ dòng lệnh Để build ứng dụng từ dòng lệnh, chuyển sang thư mục mà chúng ta có file cpp của ứng dụngvà thêm file project pro được mô tả trước đây Các lệnh sau giúp build ứng dụng: qmake make (or... menu và các nút trên thanh công cụ, chúng ta có thể di chuyển giữa các menu và thanh công cụ Để chia sẻ một hành động giữa một menu và thanh công cụ, kéo biểu tượng của nó từ action editor vào thanh công cụ Thanh công cụ được tạo ra như hình 11 Thêm widget dock Ta sẽ thêm vào một widget chứa thông tin về chương trình Ta bắt đầu bằng việc thêm một item About ở thanh menu tương tự như Open và. .. hiển thị một hộp thoại với một thông báo lỗi Việc đọc dữ liệu sử dụng lớp QTextStream, mà chứa object QFile Hàm readAll() trả về nội dungcủa file như một QString Nội dung sau đó có thể được hiển thị trong text edit Sau đó chúng ta close() file để trả lại file cho hệ điều hành Bây giờ chúng ta sử dụng hàm tr() Hàm này là cần thiết khi muốn viết ứng dụng trên nhiều ngôn ngữ Để sử dụng QFileDialog,... (!file.open(QIODevice::WriteOnly)) { // error message } else { QTextStream stream(&file); stream textEdit->toPlainText(); stream.flush(); file.close(); } } } Khi chúng ta viết nội dungcủa text edit vào file, chúng ta lại sử dụng lớp QtextStream một lần nữa QTextStream cũng có thể viết các QString vào file với toán tử .
Bài 14. Tìm hiểu và sử dụng Qt để viết chương trình tạo một cửa sổ chương
trình điển hình.
. ui;
Œ
m=B59,Hd,HH=H7,NHN=5_5647=:ZGw=7-d,H
H=H7„)5_5647=:Z,*
SB&5rx=M77HN=-%,ANd,H„)*
SBŠ?M77+!=kG,-,NMZ,NHN=*
SB}47=CD56,N„)-<-*
SBh%,AN„)*
SB$$^*
D)-+./056/
kw=747=N7qHd,HHN=*N7[=M=
#
#
# Project created by QtCreator 2013-04-21T21:08:50
#
#
QT += core gui
greaterThan (QT_ MAJOR_VERSION, 4): QT += widgets
TARGET = Notepad
TEMPLATE