You are on page 1of 500
Sa i [Jae te). C++ Ot Be ESR) An Introduction to Design Patterns in C++ with Qt Second Edition An Introduction to Design Patterns in C++ with Qt y Alan Ezust [) Paul-Ezust) | AE KER KE FE . FARR C++ Qt iitwst (AR) An Introduction to Design Patterns in C++ with Qt Second Edition Alan Ezust Paul Ezust aK RR RA FE Rie OF SFLE t Mat Publishing House of Electronics Industry JER - BEIJING Ae er AARP AP ELT RES IRR, ALBEE ft TEE TE CERRO PERE T CHL AA. SAFES. BSP C++. UML, Qt. BEARER. SQL. XMLs BitBist SIRATR, FORA SAN CHE BR — RY RI EZ AB VED FEI IT PACERS CORE, BTA REA: HS ASHER] Phonon HS T—T SMM, FES TEBRRESCMMA AR: MRM T CHREARE. Debian Fl Qt RFT RMAC RAZ. HAMA EASH EMMA, RAR EMM, LR PARENT KMART ABTCARAT RA RAT Qt TRERMSBR, BATHE IAS Qt RAIFRAITTTLA BALA HE ALAR. Authorized translation from the English language edition, entitled An Introduction to Design Patter in C++ with Qt, Second Edition, 9780132826457 by Alan Exust, Paul Ezust, published by Pearson Education, Inc, publishing as Prentice Hall, Copyright © 2012 Alan and Paul Ezust, All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. (CHINESE SIMPLIFIED language edition published by PEARSON EDUCATION ASIA LTD., and PUBLISHING HOUSE OF ELECTRONICS INDUSTRY, Copyright © 2012. ARH SIGE: Pearson Education S260 Hi LSU MATA ALF PTE A SR APSE AST VER, PALMER AR ARP RAB MEMS. RBA RIAL Pearson Education 3120009 HAR EIMOEBY ORS, TERRA. WAR SAABIAT MF: 01-2012-1498 BBB ZENG EI (CIP) BE CH Qe BTR: 5 2 W/E) SAMI (Eemst, A), (BR) EAM (Ezast, PH, MIRAE. dog: AFL, 2012.7 84,KX: An Introduction to Design Patterns in + with Qt ISBN 978-7-121-16890-1 1.@C... £OX..OX...O8... MLOcww-RKRH Tv. @rP312 Sp PR RSAR PH S48 CIP Het F (2012) 38 O80s14 Sa EA PH i temormacn ames a HARA: BSFTNE HAE ACH THe 77 AFR 173 184 AE: 100036 FE, 787X1092. 16 BK, 31.75 FH 813 FF fl tke 20127 AL RENAL =z Pt: 78.00 76 APM RLF TAHA, HOMIE. IHR, HEGRE, BE FANGS: (010) Be254888, ARVIN RUE zts@phei.com.cn, MALEALAHLIARALHE dogq@phei.com.cn. MRSA: (010) 88258888. uo CHE 1989 ERR, MOAR EAT BSE, RE CHS MT ARE Se, CHA MREB AF ORRE. MAES KAN RHEE HH. CHMMUBRHRENREBAS—, MBRFRARRREHAER RH, Hee FAT AMSLAY GUI FERRE RE 20 THEE 90 FEARASRRLAE, C++ Ab RDF ATE FI 1S AY TE LNT (Object-Oriented, 00) MEE. VESTAS (Computer Science, CS) @lh AoA AR AL BH CHORES TIL RAEN. BRB CHS C RFRA AS HERD i RATE (Object-Oriented Programming, OOP), MOEN, 14 CS BARMI— BUH C a. DA 1996 FA AFES, Save HR CHR FES ARGS Bo Java ZF Dewi, WAS AH. © Ch CHa Se. © AARHUS UCU, PALE FA FCAISES RAPHE © FRIAM POS 1 — Marit) GUI ARA. © Pystitl String 285¢#5 Unicode, © LHERE. © BEA “HHA” Java MR ava Archive, JAR) EMM REMARER DES. © HE Web ARS REECE Java API, REBA AHS. © Java FEF A785769 (Wintel. Solaris, MacOS. Linux, “nix, 44%). HU CHA ASA, WHR RTS. © QT —-AEA BH GUIS, TES Java HY Swing KML, FAT, BRESR, HHRKGEMRE. © (iS AMR FASE LL Java "PAY (Action/Event /Key) Listener KUBAS. © OL PREPARERS, BEE] LR) — PE PT ae. © QtHEHt foreach Mi, FILM AUTAT, RSW. FREE Qt A EER EDL Hl, AEE PC FS PET SEXTET BREE. © Fit (SR 6.8 9) SS AAS el. © HRA F UR (SA 8.2 15). ®@ QPointer, QSharedPointer ll QWeakReference (4M, 19.11 #5). © WRF SM 2.14 4H) 0 © HREM 203 44). BV CH fist Ml 1.2 13 14 15 1.6 17 18 19 1.10 All 112 1.13 114 115 1.16 Ll7 1.18 R2H RSHR- H a BBs BLS Ot CH BBE: CH se i CHAF pete Saath - TR qmake, T#X4+R makefiles ARPA PA ED Ot ME PRR, SUAS const KF Het SITET - SER const*5*cons Be struct fijsr REX ARLE UML Sra RKC Fa mR FRAPS BANE X SL RB SY 2.12 2.13 214 215 2.16 Fe const AUDA Ba BIH tht 3.1 RUSH tr 29) 19 3.2 QUERLBUR 30 3.3 QtCreator, FIF Qt HEF 5.8 eS (ESF ~ 59 Xi const MR inline Ri PERLE RNB 5.12 HRY: Ime 5.13 RH 6s HR, BRAS ee er BA 33 BTR Swit. 7 72 13 14 NK 15 BOVE 8H object, (application, S70 81 ATR 8.2 AAR: QUIRAPHR 83 QApplication MIF 84 Q_OBJECT Al moc —W# 85 ASH 8.6 QObject MA aria i - &7 oQTestLib: ~ 88 45: QObject,QApplication, SoA 89 EUG BOR WH AMRIT 9.1 BAIS 9.2 REELS 9.3 Kate: 9.4 BRAS A 9.5 Blix, RRA ~ “4s 9.6 BEAT: 9.7 Beet UAB 98 RA: MARK 9.9 FER: TT 216 9.10 Sil Se ATA 222 911 BOE 810K ERMOMANE ~~ 10.1 QAction, QMenu #fl OMenuBar~ 10.2 KAI ODockWidget~ 103 Qsettings: (RfFAUKSLALD PBF HO 234 10.4 WYATT RIE 236 10.5 HSsist- 10.6 tx () AURIERE 10.7 RY: EB CUABHHE 108 RE HN Bae 11 WAS BE 11.2 Wl, FRAGA 113 AFFRTA BI 114 BeBe ETA Ba ILS Bezofsh: past tee 116 #9: Wal 17 SAB B12E THR. MEMRAM 12.1 QMetadbject FUR 12.2 2BHREIF gobject_cast ~ 12.3 Q_PROPERTY $A Qobject ATH 124 Qvariant 2: JmPEUiTA - 12.5 Shas 12.6 Jt38H, TALE 12.7, invokeMethod ( 12.8 459: BH 12.9 BU S13 Bye -- 13.1 SER)-WLAI-desthl #8 (MVC) 13.2 QA AL ~ 13.3 Zone. 13.4 13.5 13.6 13.7 14 BEANIE RA: 14.1 14.2 143 14.4 145 146 147 $815 XML Met 15.1 15.2 15.3 15.4 15.5 B19H RUS RAs 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 19.10 19.11 19.12 19.13 ape ~ amet tt 43, SOMA RAB HARB BA: RUEAEM RAR 5) QUXML REET RE SAX AOT ” XML, #4444941 DOM aH TBA Gea ROE, BE FES BERD STS APE - PRERRER BR FA ANSI C+ 28 SeHGH TT WPA TBP MGEATE- 16.2 RS TABLE. 16.3 Fagade Bt3t- 164 27 RATE HH- 17.1 QProcess AMER! 172 Qthread Mlgtconcurrent 173 #Y: OThread Al QtConcurren' BAe V4 18 REE 18.1 QSqlDatabas He SQL 18.2 PEARSE CHB E B28 HAMS eH 20.1 BISEX 20.2 203 20.4 20.5 RAK AeA 21.1 dRRRAD~ 212 WAAR E STR 213 WeFITA 21.4 BASS 215 TET HAE 21.6 AA, BSI LL 21.7 AIRS BLA 218 219 21.10 9: APD; 223 SRM 22.4 public, protected Mlprivate BSB Ye te wh #23 MP3 Ash aOReL Rul 23,1 Phonon/MultiMediaKit FO#E 23.2 MBO 23.3 SAAR AL EDI: HRA CHARS 23.4 WidePt 23.5 SOIREE 23.6 BES} 23.7 FEF, RBA Ree HID Alan ft) Debian BF RR a on WIRE C+H/Ot RE Sex HARB BAEC HRC FARIA- Z-BHD> HtHAS At Rie RUE BI BIE RSE ROX RIVE BLE ROE Oe RUE BE Hse HE HAiS¥ 16 RATE Fs CH Ray KSHR Qt BR AR Wak BRASH RHRARA QObject, QApplication, 43-3 4oHh BH TR LRU RMRBS FOR, Byte RA RAL RA PRA BEA EM ARK, XML #4 RS RRA HR SAE TR AR SiR CH sr ARREST CHGUESE A 0 HERI EAI, MSE. AAR. HE. FB, BEAR RAUBER, DR CHM RL, WETRURES CiHAWKR. HAPAULME HEHE AI Qt. 1.10 C++Hitiat CHRD ETE C PUT — ATTA, (EA CHT RMA, Cee “He 610”, REWER, CHE C MURERH ERIN T AS RHE, HCRUERZRAL,, SORTA I, CATER, RERUN AMRARN ARE CHAREL TOE CHT MEER: GRE. BORLI REMARRIED , MRL AB 7 GEARY BA HRA TED IS (DL ERE A SEH ALR E) SLRS REL KMRAN MRNA) MEM LEA. CHROMA RE: RRND) CH PAYER, APR EBOMIVTI UREN CHE FRET IF?. CHIPAPEEESRORHE, CATMOMRERR A MESS HL FT BEA. FSF fA, TITRA REY, TOBA HEN REE ROKER, RL, eT RE HOSUR AUR ARTES HE, ABM Ror RK HORA TD) SY REET FR, (LAR CHERPEREAEPENY C BBE, WSO C ARRAN ETT 1.2 Cr+ fie C++ Bjame Stroustrup # AT&T Si] Bell KWH THEM HLIt, MH Bell HSRIT A FLASH ACL HE. 1981 F, ATT AF ATE SLR CHARA, FUR CHAREEL AYRE ING 1986 4F4]], Stroustrup S45 The C++ Programming Language —WMRAT. Mik 1989 4F C++ 2.0 WRI, CHER — APSE, SAREE. RE, SRSA Ftd FE CHER RME. 1997 4, SEIN RHRIE(L# Se (American National Standards Institute, ANSI) TBR RII RATT TS CHIE BU TESRARHE, 4 RY Draft Standard The C++ Language, X3116/97-14882, Information Technology Council (NSITC) , Washington, DC. 19984F 6 H, SHNRLTRT 9 44) ANSI/SO (International Standards Organization, FHBRPRYEE ASD TARA 20 SERRE T RE. Stroustrup BGHY The C++ Programming Language S8=}8F 1997 4F1HIk, BBR WEDLRIN CHBAT, OREM SESE ISO Ke EAPRHH TGS (International Electrotechnical Commission, D $844 tps /orww research at.com/~bslbs_ fag htmlinvention, @ MABE, RADAR TS, UR AON, MORRO Are RS ROUTE ORD RLS CHhisy 3 TEC) Si HEAD, TEC FRENTE PRET fan il FT 5 ALI LA 2005 FF BRA, ff Technical Report 1 (Qh 29 “TRI” ), Xt CHHAPAIRERERETT TAH FE..20104F, TAFE. CHAYy URRE (EAE ry ISO/IEC JTC1/SC22/WG21 CHIE RARAE 2010 HFT IA ROE HERI. CHOx “CHINE —TWR” MEERA AM, ARF 2011 FEMS 1.30 BP C++ HF EBABH, WLP RR REE Hh ABS RARE (Odject Oriented Program, OOP) fi BAR. 4—T BNF AY ABE ALA I FARR THEE ES ABA. AB BART CHEE PH -BERER, mi 1.1 src/ear my fe) /* Computes and prints n! for a given n. several basic elements of C++. */ include 1 int main() { 2 using namespace std; 3 // Declarations of variables int factarg = 0; 4 int fact (a) ; s do { 6 cout << "Factorial of: * 7 cin >> factArg: 8 4€ ( factarg <0) ( cout << "No negative values, please!" << endl; ) 2 } while (factarg <0) 10 int i= 2; while (4 <= factarg ) { " fact = fact * 4; dedea; ) 2 cout << "The Factorial of " << factarg << " is: " << fact << endl; return 0; 1B } 4 1 BRE CHE. HERE CHARA, FIMBRRM. ABMTRABS aint, PME. 2 main MAF, EIRE—* int filo 3 AUMEAIHS cin, cout Mendl, MAES MISHMML “std::". 4 CIB AUR MiB. 5S CHIR E RU ATOR LIB. 6 do--while HiFi. @ 2 mpyiwnww open-sd rgts<22/wg21/doce papea/2010%3225.pAe @ InFRRMAeABER ISOMEC + 2011 4 8 A BRAT CHIL CSENPRUIRHE C+0x ) SURES EDR... — iAH 4 CH QLiRTRA (HMR) 7 SPREE. 8 DERHEML ATE BASE BM int 26H, 9 if RHA. 10 WR false, BiH do Hi. M1 while (RH FFIH. 12 while HARM. 13 {main RYGEE o Mt, sem. 14 main HRW. ERS GL, AAT LUTE ILA) GNU C SEE goo MERE EE. BE CHEFS g++, BBN aco BUF, “EX. c SUPT h CE RR OHHEDHE, He BEDI CHE AT RRAWRRRARL ET TEE, RG ST-wall. src/early-examples/example0> g++ -Wall fac.cpp src/early-examples/example0> g++ -Wall -o execFile fac.epp HET-Wa 1 DARE AS A RE i A RS, BE RR ERATE, TMT RBH-o execKi le HEMP DUT HNL ER. SORTER, TURE SPE — TW aout TRATION, KHOR, i AAP —TA RP OBA—7 5 BRT ATES HO (tN, LATER AATE) , ME RRE A INERAR He 8 RICE. DEBT RALERE REP ATIE . Zetnix RE, MAAS man gt+ info g++ HEAFHT (manual page), CLF HSM ABA OAT MLA RBBB MM RRB oH ANCE, IIR, EF gee KH AVSESERHALE., FTL GNU RITES CH He, SERRE, MAA ITE PGE. FE nix P-L NBD erc/early-examples/example0> ./a-out Factorial of: -3 No negative values, please! Factorial of: 5 The Factorial of 5 is: 120 axc/early-examples/example0> MARIE TAS CHEE LALA EER 1.3.1 TER 5 Java #8, CHATTER, TUB, (CEU ZR BITRE, ABW RUETERE. CMT METI LUGUH CHR DUREIAATEERE, BME «a+ CHAI, @ & Windows Mt, HIF mingw MO ATL EIN a. ene HHS ® $51 hupyivruw.gnu.org/oftware/grclonlinedoce/, RAE CH 5 #include Hi ATEAEHO RK, AURA RE, FHOTBUMERHE + #include?s 45 CRA FE, CHP DTH AYE RE SABLA IES, ACER RR ME SUS TINS AH faSiiS Jt, FAIS] A PMEFE MAA AE Xo RAPA SI) SoHE SLE B) PAA SAAS SS std Po R51) (BM 20.4 45) FLAS, PBR MS, JERE RABAT LN Ae WBLERL. using MANTELS, BOGE ASI] std HANES ARMA See SBR. 1.3.2 FRR CHib eee ae BES type-expr variableName; type-expr variablewame = init-expr; type-expr variableName (init-expr); CR-AEAT, AUR. ROMER MERE, 1.3.3 idE CHAREST LAP LARS, I 19.2.2 HATE. 1.3.4 RK FRO LL RAT SAS ROO DRH, 19.2.3 TT =e AH 1.4 RAEMA Sith RL LLP, BS #include SEPA ABA FBG LEAR (i stream) AUB (ostream) o 1. cin, SH GMA, RUN BBA. 2. cout, BAR GwHl, RU tl a PAE. 3. cerr, BMA, A AMUSE ROH, CRURDIRT, HAE B A SHEMALE. FRILL EAT 2 ostream WH cout, PHT EMMA BR operator<<()o PRR T > () AF istream MR cin MMA, RAM< #include int main() { using namespace std: const int THISYEAR = 2011; string yourName; int birthYear; cout << "What is your name?" << flush; cin >> yourName; cout << "What year were you born? * ; cin >> birthyear; cout << "Your nane is * << yourName << " and you are approximately " << (THISYZAR - birthYear) <<" years old. "<< endl; } #3 flush Ml end] KH ste fr% sll EM-F (manipulator) ®, FRBI12 POAT string 2°, CARAT CHEER. 1.8 WHER, FFE REM — 2 RRNA Si2e. windowsmsve me BUAWDLR, MSVC PAW ATMS SR. RR RE SI MSVC Bx — NEMS A, BURA MET + AEA RAH ROHR. TUB 16 FP 3% “CONFIG + console (MSVC i)”. D RUBIA, n >> 2 Sih int (UGE RIAL, SIR CARNE 0 BRL 4, MONTES HARMON, Sn ASC RIN TOM, OREKTA EIA, CREAR ARAM, LIACEDLORE. 1.9 TEA ET. © Si 2 ARETE RE, SURAT EAA, RAS Cotity 7 1.4.1 83): HERA SHH 1. ABE APREMLAY dist BR PRET —T+B RW src. tar.gz fy tarball EMI). CASE PABA. ARI WAS KR FM Bly 708 (build) IHZTE, WAAR POET, RM ELHTAH “BER BAR Atte AM, PGR PYROS T eB aePR ERY MR ATMA. PRR. TES. TEE PRUE CEP ETT TN. TCAD, RATA E RT CH EEE. 2. ALFA 1.2 SER PF IEESS 0 He, MBHATE, RAECMENDTHE. © MRA RIA E— MEME, SRE A? © MRMABMW “curious George” MER, SETA? © MRR TTT, SRA A? using namespace std; © HEA) cin >> yourName; BAR getline (cin, yourName) ; SRIRPRRMARES “curious George”, BREA? © TANRRE cin >>49 getline () MARR. 1.8 WHR. © AAFRMESHAR, BRADSHAMMREMSAPER, FUER. 15 RRA FEU SET AA RE EE NEE, ET A AERA, HRSA RRM, PRT RR LT HR ANGE, STREETER MESFET , RBC a BE REE ESS SS eA BE TE. PM, AR 1.1 ZE main 0 BECP VAR, abl 1.3 Rea T MR it SORA UBINE CR BRT RE 7H11.3 _src/early-ex: Ne C2. include long factorial (long nb { long ans = 1; for (long i = 2) i cm my seid Af (ans <0) { return -17 } ) 8 CH Qt RHR (Ha) return ans; ant maing) using namespace std; enter n: " << flush; if (nm >= 0) { Jong nfact = factorial (n); Af (nfact < 0) { cerr << “overflow error! " using namespace std; void foo(int n) { cout cc n << " is a nice number." << endl; d int maing) { cout << "before call: " << 5 << endl; £00(5); cout << “before call: * ce 6.7 << endl; D 152 BersrR TPR, ASPET LA seem PROTA 40 CH Qt RHA (HMR) £00(6-7) cout << "before call: * << true << endl; foo (true) ; } BAAR, ASAT ORT 2. Ase TE Te Sil. sre/functions> g++ overload-not.cpp sre/functions> ./a.out before call: 5 5 is a nice number. before call: 6.7 6 49 a nice number. before call: 2 1 49 a nice number. sre/functions> HURT LAIR “RAR” BISC, BG, Rete int it, SEE BABS (BD ILA Ol A) . EEG 6 FALL, 6.7 BREF 7, AREA BE OSHA. TK, AAMH true RERM (false Mim 0). MAB WAS Mia true(R# false), WRB A NPB, INA 1.5 BAR. PREF T RR 75] 1.5 _sre/functions/overload.cpp #include using namespace std; void foo(int a) { cout << n ce" is a nice int." << endl; } void foo(double x) { cout << x <<" is a nice double." << endl; } void foo(bool b} { cout << “Always be " << (b?"true":"false") <<" to your bool.” << endl; } int main() { £00(5) + £00 (6.7); foo (true) ; } AROS RRA, SEPA —S main () RUN TET.» TERE foo () BCR NAP AR HEA” D SHeAMHEWA cestexpr ? valuerftrue : valverfralse, Wt—Adust hi ATI T ARB AT. ME testExpr KATE (GIN, crue), MURR RAR SAME, MUR test Expr FUSE iN, raise), MRAM SAMA, HLF CHhisy "1 src/functions> g++ overload.cpp ere/functions> ./a-out 5 is a nice int. 6.7 is a nice double. Always be true to your bool. sxc/functions> 5 SPR CH RAT Sa A RHE 1.5.1 5]: Bsr 1, RBULF sco HFA 13 AS, PIETER FIUES. 0 EURASIA, BES. TRA BAR BKEMA (HEF, COLE MEH ARR COSY, HERS EARN MAR. SOR PLS ANE on BEE if (cin >>) (2. } ROPE Ss, ARUBA Za AARP RE. ERB AF FAOL, 19.9.1 EARS 0 CHET, CAAT ARE, HBIHTA 9999 ok. 2. SAA FPA a double toCelsius (double fahrenheit Temp) ; double toPahrenheit (double celsiusTemp) ; Raa SEE, ULF PR a REA I 1.6 qmake, L#X(+K Makefile CHALE HAE NCE. SOCAL. ELE RO RE, SHI HRA RAE. Dh T SY A UR LARA DUT EE, ROPER POMRB AE, HAR EIR (link) TARA. RHE BRON, WHEREAS. AT RLS AD, BORA PALAIS A AC BRL DT OLA, PR BREMEN MRR, UR RAMTST Be. FAFA LAE ESS OHS ELIE make®, HSM Makefile PERT AM FEAAT, ABR ERENT S. Makefile 4 shell MARY, HEED AS WB. © ATER KARAM GM, ATM. cpp FRB) .o Ki, BAN. cpp XK HAMAT gcc -c HHS) 0 . © BANAL REAR, ENA LAT RNL REM IE © BRARAANAM, make FEAAMMSEU, Hh mingw32-make, gmake IH cnake 4, #£ MS Dev Studio 4, StH nmake. 12 CH QRH (FH HR) © ARCH T DAT MET] BAT GLA) 2 © ART Hh TYRE RABE, RE EUR CR aT BUARE PE, make trO SM 4H LHF BR FARA BW Makefile MC, THAT FERIGERAE RR AAEIFEER) - (HUH make WHROGAML, EAS HABE 2 TARLAC, BRA PE PAIS AMA MACE, TAR Be aT PRS RCH PL. Pe Tate Qt KARE > libaapp lib Sivens templaemapp templates SPP Cran BE L1 Qt make TL (gmake) RESCH UT Ot, BF ARORS Makefile X(t. QT —+* qmake TR, ESP Makefile Xf. RPM, eA BETT make FEM E HUNT. AA IDE ABTA TNE SOGETT make A (RAMA), Fea aA. HT @l#t Makefile, omake BR—P TECH. TEHHUAT ATL, HT THOT ARS EAC, CARRE TREY. TRC Makefile BiH, APHAAMEGUME. RAF ANBAR LEE, (EAT qmake project MSP 4—TMARN LEI. METIS, amake SHA Le ARTO ABIRSCEE (* .cpp) fF29 SOURCES UHI, MRA R PMA (* on) HE HEADERS FH. SDN TENE, STI K-o SAME A RR. MR AREA MATE MBM, TW qmake SYM LEA RWS AHS LRU RRR ATSIC. QUBSETADCHR, qmake tH LRP OE Makefile. MUR, make tro ABLE Make file PADI OMES ABUT. MDT Pe TARGET AEE, HR VARATEN AR @D RUREHE Mac OS X RCRA Makefile, MIRAE TALC HE YE-—17 CONFIG -= app_bundle, HRAME4H gmake ~spec macx-gtt, MAILE rake. RAX CH 13 “F ROORIAR BAR T MAAS FH make JRALA 1.1 PE, MPRA TREAT ARE HPT EZ AUS, ABBA EE AR HES sxe/early-examples/exampled> 1e fac.cpp exe/early-examples/example0> quake -project src/early-examples/example0> 18 exampleo.pro fac.cpp src/early-examples/example0> cat example0.pro TEMPLATE = app TARGET = DEPENDPATH +=. INCLUDEPATH += # Input. SOURCES += fac.cpp arc/early-examples/exampled> quake exc/early-examples/exanpled> 1s exampled.pro fac.epp Makefile erc/early-examples/exampled> make g++ -c -pipe -02 -Wall -W -D_REENTRANT -pOT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/Linux-g++ -I. -t/usr/inelude/qt4/QiCore -z/usr/include/qt4/otcore -T/usr/include/qt4/QeGui -T/usr/inelude/qt4/QtGui -1/usr/include/qt4 “I, -Z. -1. -0 fac.e fac.cpp g++ -0 example fac.o -L/usr/1ib -L¢tGui -1gtCore -Ipthread sxc/early-examples/example0> 16 ‘example0 example0.pro fac.cpp fac. Makefile arc/early-examples/exanple0> Yeti make Ht, AWAD EARN SA, WAGED, FAA. Be REA LBTTIX TT axc/early-exanples/example0> ./exampled Factorial of: 20 ‘The Factorial of 10 is: 3628800 src/early-examples/example0> ./exampled Factorial of: -3 No negative values, please! Factorial of: 0 ‘The Factorial of 0 is: 2 src/early-examples/exampleo> BREESE APES , TEAL qmake #l make, EATRAMAOLT PPO, REY TRBRS MRO, SCHAUER. C1 WEA MART make til Makefile, DUR ECE ET — BP, ELE A PET BE BIH FUREMAE. URES SCH A, RSC EP a PEAR ALE Be TEBE RP OCR) , MURINE not found RA undefined WM. JUMAHIE FH pro Xk. BAM, HATE Qt HY amake HIB @D $2 hup2/doc. qt nokia.com/tatesvqmake-manual hime 14 CH QRH IRA (HMA) REE TE PRES UR, SCAR ABER, NUTT pro SCR SOT A YRANBIAWALAY SOURCES, HEADERS BL# LIBs FIZ. LSC ER DOCH, FF CHR UE FASC AEA (EERE) ARPA 1.6 PH Hi HEL qmake FERRER, PTE EAT ACE LP 2 HR THESE HIB ERLE, THEE Pan A include (/path/to/wherever you put/comnon.pri) BET LOR RADA EAS, HATTA. Zi 1.6 _src/common.pri # required if you want to see qDebug () messages CONPIG += debug # place auto-generated files in "invisible" subdirectories win32 { Moc_DIR = _moc vI_DIR = ui OBIECTS_DIR = _obj } else { UL_DIR = .ud Yoc_DIR = .moc OBJECTS_DIR = .cbj ) # rules below apply to TEMBLATE-app projects only: app { # place executable in sane folder: DESTDIR=$$0UT_PWD # don't place executables in an app bundle on mac os # this also permite console apps to work on the mac mac { CONFIG -= app_bundle } # Open a console for stdin, stdout, and stderr Windows: wing2 { CONFIG += console d t Beit. CONFIG += console (windows FF) FAH A Windows 34'S E—tt CONFIG += console, RHMLARRES ERY — At deste 2” BFL CAP BE ea A SP eH RR HE MS Dev studio, Mix H HPA Project Properties->Configuration Properties-> Linker->System->Subsystem->Console $f}. PRRARMAR, MHA A|RRH qdebug(), stdout R4 stderr MK. RAK Crriite 15 BHRixe. CONFIG - app_bundie (Mac OS x Fi) AT Mac LMM SEY, DRELEXRH + Me —47 CONFIG -= app bundlé, 3. FABLE As —AS app bundle, ESM TMTAAKA-AF ART. RHA AEA P Sa RVONRA, Re, BTM qnake -apec macx-g++ 14#—+ Makefile, RH, #4 make BREA RAMR—PTRTAE. 1.6.1 #include: BiRsksctt ltinclude BAELKHMSAAAE Winclude cheaderFile> include "headexFile* include "path/to/headerFile" RIES (>) SR HULME TET LP RB HO ERTS FS FAL AE Be UE BE EL CTE RR TSO AS Se A RS PL A 9 SET AE BERRI SLES BR BET LAE A, FY SEAR EF SE) o UREA BIE, WEB BPALO ARBRE. MREARHETHSTARTHEER DUES HEA, WABRBIT—T, 8 RRA. MREBRREHLH A RPRRARA LH, MG ERAR AR WIPE, SAE DBR CHEE PHS. APSE, PYLE ELRMAAIFA-1/path/to/headerfile, WMMEBY RLRBE. MRED IDE, WHE—+ Project->Settings->Preprocessor M# Project-> Options->Libraries MER#, EVUKZESHAFAR, RAMESH AT Hea -1 FFAG PERE FR RPRAAB!, Wet gmake WRG LEHRMAN INCLUDBPATH += dirName Fo KE RRA SET EM Makefile PAY INCPATH K, M/A REAM ER SERNA. ‘qmake -© APL BX SUBDIRS ( FH HK), AMA EA SBS Hh a KAA AT amake fi make. WRARA TUM Qt MAW Makefile, HL#ATHRMERERS HH Makefile, J) THAI make -r, DB Xho FMI a Say Makefile. ex QETA, FHMKLEDET GKXHZERASHEULKH. HE UARERE PRED RATHSHS, RRGRAS EH REALAY, LRAURAIXH. KF GMARRAAANES AR, HBR C27. 16 CH Qt RITA (HMA) 1.7 RBERAH BRT Qt ERSTE (ECLA API SOM AREBE, LAA Qt PRC RICA GE ), WAV SERRA. AF Ot EEC. 1. Qt DEO TUAEEGET FERAL RENTER RAHN RAPARAFELROR MRNA, SW TLMGDARNER. 2. QRH MM a — BT Qt BREE AMEE 3. QtCentre MEF Web WZERAK, EITEAL Qt UT CHEE EGEEERY Qt FAP ABCC ARTE. MLPA ARIS, LBA FAQ. BNE Hb tHRAREP, (MAKES Site, RAVI Fe. 4. ics.com* BIR BET. A —ME UIA UAPE, CIES Qt PUAN AR BEBE AL BAR. ARB SARK, Ba BHEAS BEM AT. 5. EBSA WER, FEDORAS, TURTLE Google Pots PUR Z I. 18 SHR HE CHIRAL BREA SEE 1. const char*, M# CRASH, EBA TS CH ARRHEO, Bharte> SADR. EAE EE MGR TT OTR ER 2. KAT CHIEF string, FTAA ABE] PUR TRESL. 3. Qstring, HF STL FHS RAM, AEA ERH APIABAS EH. CHISEL SERPHEB Sat SL hl (lazy copy-on-write) FURRLIE (implicit sharing) , BAHHE 11.5 HPRE, PTL aR BREM EW OString RAM RBSIPAM Qstring AMAA, MARY RAEI IL. Sb, OString BARK Unicode HAE®, WIT ETE OE. ARON 1.7 BURT STL FAP BMA ARES FRG 1.7 _ src/generic/stistrinademo.cpp include Hinclude int main(y [ using namespace std; D res H OAL A Inpeldoc.qunokia com. @ Qi AHP PLRAOPGRE A hops qackiacom/, ® Qc FF ARAMA RRAL DY bmpudeveloper qt. nokin.comwiki. @ QOL huputnwwqtcentee.ong/s © SH nputwawiescom, © Unicode #4646187 hupwrw-usicode or/sandardstandard inl, BAX CHhisy 17 string sl("This "), s2("is a %), s3("string."); sl += 92; 1 string 94 = sl + 93; cout << 94 << endl; string 95("The length of that string is: "); cout << 95 << s4.length() << " characters." << endl; cout << "Enter a sentence: " << endl; getline(cin, 32); 2 cout << "Here is your sentence: \n" << 82 <« endl; cout << "the length of your sentence is: " << 2.length() << endl; return 0; } 1 SHE. 2 52 RGR MINAR. WFR HE TER. src/generic> g++ -Wall stistringdemo.cpp erc/generic> ./a.out This is a string. ‘The length of that string is 17 Enter a sentence: 20 years hard labor Here is your sentence: 20 years hard labor ‘The length of your sentence is: 20 src/generic> PERUSE A] getline(cin, 52) AMT AREA TERE AT Yo ARI 1.8 PA Qt GEE STL RST, CA GAR 641.7 IPL. 2311.8 _src/qstring/astringdemo.cpp include #include QTextStream cout (stdout) ; 1 QTextStream cin(stdin) ; dnt maint) { QString si(*this "), s2("is a"), s3("string."); s1 += 82; // concatenation QString sa = sis 93; cout << e4 << endl; cout << "The length of that string is “ << s4.length(} << endl; cout << "Enter a sentence with whitespaces: " << endl; 82 = cin. readbine(); 2 cout << "Here is your sentence: \n" << s2 << endl; cout << "The length of your gentence is: “ << 92.length() << endl return 0; 18 CH QtRTARA FH =H) 1 @NoQTextStream, CAMARA CH iPReEHA MAT 2 #k- iostream, ifi# Qrextstream: :readLine()o TER, BU Ty 82 = cin.readuine() HIATT A THER OSt rings 19 it REALE RAS AMR. HEE PELT , Qt PARP Ts WHEAAS iostream EXT SHAM: © cin —2tl BHA (HEAD © © cout il GH GFR) © cerr— iil BHR SAP) 0 TRE MTSE, tei flush Al endl. SEAT BRM, 3 RRR G US HAAR. BEATA BRAID Fee © MUA, BOBS CBRL. © RAT, BEARER AX. AA 1.9 BRANT Hl GT LRP FA RK aii 1.9 _src/stdstreams/streamdemo.cpp include int main() { using namespace std; Ant num (1234), num2 (2345) ; cout << oct << num? << "\t! << hex << num? ce '\t! << dec << num2 << endl; cout << (num < num2) << endl; cout << boolalpha << (num < num2) << endl; double dub(1387) ; cout << dub << '\tt << showpos << dub << '\t! << showpoint << dub e< endl; dub = 1224.5678; cout << dub << '\tt ce fixed ce dub << '\t! << scientific << dub << '\n! << noshowpos << dub RAE Coie << endl; + SOF BR. 4451 9292345 1 true 3357-41357 -+1357.00 41234.57 41234.567800 41.234568e+03 1.234568e+03 19 BBR iostream MHMR—TBMEX OTextStream, HTH SMA AE SRM, BLA Qt HRT —TEI PRM adebug (), AEA HAE ARAB SOME GRHTG), AAA RUEREEO, SLA 1.10 HBA. 3511.10 _ src/atstreams/qtstreamdemo.cpp include Hinclude QTextStream cin(stain); QTextstream cout (stdout) ; QTextstream cerr(stderr) ; int main() { int numa (1234), num2 (2345) ; cout << oct << num2 << '\t? cc hex << num2 #include #include amt main() ( waing namespace std; ostringstream strbuf; int lucky float piss, double e=2 cout << "An in-memory stream" << endl; uckynumber: " << lucky << endl «< pi << endl < @ << endl; atrbuf << string strval = strbuf.str(); 1 cout << strval; ofatream outt; outé.open( "my: out << strval ; on out£.close(); LPR REER 2 HCH. 3 Ost GU) RASCH, ATH. SAPTHEZE, ASHER E. TUM ABRA SEER, Abr ICRZMFESA, MAA ATL Ma 1.12 Bra. ‘streams. cout << "Read data from the file - watch for errors." << endl; string newstr; ifstrean inf; 1 inf .open(“mydata") ; ig(in€) ( /*ake sure the file exists before attempting to read.+/ RX CHhie 21 int lucky2; inf >> newstr >> lucky2; Af (lucky I» lucky2) cere << "ERROR! wrong " > newstr >> pizy if (pi2 t= pi) cerr << “ERROR! Wrong " << newstr << pi2 << endl; else cout << newatr << " OK" <¢ endl; double e2; inf >> newstr >> €2; if (e2 I= e) cerr << "ERROR: Wrong " << newatr << e2 << endl; else cout << newstr << " OK" << endl; inf .close(): b 1 RASCH. FTE EOI PEATE TAS, ANB 1.13 BEAR. 1.4 ums. bee. cout << "Read from file line-by-line" << endl; inf.open("mydata") ; seine) { while (not inf.eof()) { getline (inf, newstr) ; cout <« newstr << endl; } inf.close()+ } return 0; } ARE 114 FA Qt CPR. PAPAS T RARE. REET BINT Qt HH: QString MOFile, MAAMMMIRAM RIAN SHBARIBD , ECT WED. 3811.14 _src/atstreams/files/ademo.cpp #include finclude include . QTextStream cout (stdout) ; QTextStream cerr (stderr) ; 22 CH Qt iRitRA HAM) int main) { QString str, newstrs QTextStream strbuf (este) ; a int lucky float pi = 3-14; double e = 2.72; cout << "An in-memory stream" << endl; strbuf << “luckynumber: " cc lucky << endl ee Upir " ce pi > newstr >> lucky2; if (lucky I= 1ueky2) cerr << "ERROR! wrong " << newstr << lucky2 << endl; else cout << newstr << * OK" << endl; float pi2; An >> newstr >> pi2; if (pi2 '= pi) cerr << “ERROR! Wrong " cc newstr << pi2 << endl; else cout << newstr << " OK" << endl; double e2; in >> newstr >> e2; if (e2 t=) cerr << "ERROR: Wrong " << newstr << e2 << endl; else cout << newatr <<" OK" << endl; data.close(); cout << "Read from £ile line-by-line" << endl; L€ (data.open(QTODevice: :Readonly)) { QTextStream in(sdata) ; 6 while (mot in-atend()) { newate = in.readLine() ; RAE CH cout << newstr << endl; } return 0; ) 1 strbuf fl str Mush. 2 fle (BUH) RERC, FAP HTH. 3 HCPL. 4 EARS HIN RCTTE HE. 5 BASH. 6 BAH. L151 PHOT ADRDIAE strut HUBER. 1.10.1 BRS): SCPbE L. BARB 112 PRP eROT e. 23 © CHEF, HERMASAZMAA PA STL SAB AERRE HS fileName, TRMHBM fileName.c_stx() FA EHR open () BRAT AEX. © BCA EF, LRP TREACHER HT a SN PE GS, MR FEAT ERE HA) » © MURZE “watch for errors” ARI HGRH AER (fin, FA int MAE float a # double) METRE, SREHA? TR. © MWRZE “watch for errors” BS} RBBOKF WE At BAM newstr ER, BRA tA? TERRE. 2. SAR 1.14 PRR SERS _b— SALE. 1.11 AFR AeA AY Ot RE aR 11S PH PATA CHF ESA, “CARER Ot STREET Tbe ASS Avid, ZED ostring FART PRE POSH, BERR PAT aa FET URL, (ERROR CEA Hh, CRB BLE T AA th 89 PF FA Qt RUB ALP Fl (GUD GEER, iE) 1.15 _ src/early-examples/example1/fact.cpp include int main (int arge, chart argvi]) { Application app(arge, argv); QTextStream cout (stdout) ; // Declarations of variables wns 24 CH QRHARA (HOM) int answer = 0; 4 do { // local variables to the loop: int factarg = 0; int fact (2); factArg = QInputDialog: :getInt (0, "Factorial Calculator", torial of:", 1): 5 jser entered: " << factArg << endl; <= factarg) { fact = fact * fr ete } QString response = QString("The factorial of $1 is $2.\nt3") varg(factarg) -arg (fact) 6 -arg("Do you vant to compute another factorial?"); 7 answer = QMessageBox: :question(9, "Play again?", response, QMessageBox::ves | QMessageBox: :No) ; a ) while (answer -- QMessageBox: :¥es) ; return EXIT_SUCCESS; } 1 main BMT, EiH—* int fi. 2 — Qt GUI AA FERB SY 3 QUE Fane OTextstream. 4 WATE do BAZINEX, Ba EFITE do BARZ IMIR 5 AE, EP ACHE RE 6 %—*8n BAT arg () AR. 7 RTF) APSA, REE ATEARIC (token) WATT. 8 MALAY “fizek” ia3t. MEF PEAT FDI Qt RBCS). © QApplication—fe RAE F Qt GUI ALAN AIM @ OInputDialog— HAP WARE. © QMessageBox—— lA] I" BRAN Be © Qstring—Unicode FRA Tan Alt BED T DURE AH QString BMarg(), ERR TE LAT PHS RUE (21, $2 HF) 0 @ OTextstream—PIXAPBA ARH Ht KTR APEX T—TRRA cout AYE Ht, FORCES CHAREFEP iostream cout MZEAHIA (stdout). MFLEA SoA ATL HA (widget) AAP BA, SANEHE cine RBI 11S PERSE FNS PA PACHA. © MSTSM (arge Ml argv) —1.13.1 Ho © Ste MTEL (:)—22 © BARAB—_29 ¥. RA CHa 25 © 41.15 Wo © WeLS—_52 45. TAMA, ASB 1.2 ARPA ES AEF ATE ERA BRAG spin box, EBLYTE OSpinBox XH. EBA MAME, ARPT Ba KA LARS PO, RS AT A JAP oT Deak LFS a, BML RE, BA EH E Cl, ETRE AEM) . PRAMS OK RH ZIG, SHES HAY OMessageBox 1M, EM RiTHAR, M13 Bra. The factorial of 5 = — 12 QtnputDialog ATM A— MER 113 QMessageBox fA KRFLHRAHES he OH Qt RAVER LE, BT. HR, Fe T PET LEE NAS RATE ASHE . PR — Me, BTLA TABLAS ATL, dial 1.16 Bra. ZEB 1.16 _ src/early-examples/example1/exar 1 TEMPLATE = app include (../../common.pri) SOURCES += facl.cpp 947, TEMPLATE = app, #25] amake IWS ARETE BIEN Makefile FE. MRSC, SUE] TEMPLATE = lib, LGB Makefile FEHR. B=MATREERIDC TESTS ARE , 1 —T FRE BE RAARAMTEKH. RAMA, HFLARHTE RP MEAAA TEMPLATE = subdirs, KAFSCER BRA TF BR PAVE R Makefile. PIATWATAWHALARE. Bua, WUURICHHE souRCES PIM. 1.11.1 3): AFR PRA ARH AS Ot ME X—HHATHS Sl 1.15. AACE Qt HHH API SC#Y(Qt Reference API Documentation) PREKE AER. 1. REBATE RCEEY , BURSA Shih Cancel SEH BY ANETTA BIB OES? 2. HRY, BBFR AOA L SAT — MiG. MER RE , DOERR RT REG? 26 CH Qt RITA (FMR) 112 tae, RAMEE RL CHEF PATS, FER, WE. RUB RAMAEK. PRB EAL BPA PRA, RAEI RARE CHR OH "PHRASE ATER A PSH. CHARMED IPRA TE nae IS ER, (AE CHA FER SARI RAFAT A HOHE HY 31 TEFE. Ht (literal) BT} WEE PR MET A. BFR —MEBARS , ETE UPAR, PARRA LA a, Pee. Pe 1 HT HRA HR. R11 MTG bo ax 8 int #082 Su BM oR IAES int BA SL 2G 1 at LZ Long int BA os ASH Ln 08 BE oxs Rt ine A true bool At it S0F Saar SER A so double (UNE #806 Ht sou PFASZAROS LRA LH Long double AUER s char RUMHE (ASCH 53) “so” fUREAF'S', (OU \O'M const chart BN “any” — “body” “anybody” w we Beet w it w ree v mals v eal e CRD) eieat w ait ~~ EEA —PLALLA (const. char*) w ee w ER “a string with newline\n” 3 —* const. char* CHS AEE AR, FORE EMIS CHA. avi 117 ART ARE RRMA TE RLS |S EAE ESTAS ETT AS wl 1.17 fearly-examy literals/qliterals.« include include Ant main() { const char* charatr = "thie ie one very long string " RAE CH 27 " g0 I will continue it on the next line"; OTextStream cout (stdout) ; QString str = charstr; 1 cout << str << endl; cout << "\na\tb\\c\'d\"" << endl; return 0; } 1 C UR ASE AE HE FT LA BRE BERK Strings EMI EAT MEE PUTS SIRTF SH 0 src/early-examples/literals> qmake -project erc/early-exanples/literals> qmake src/early-examples/Literals> make g++ -c -pipe -02 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DOT_GUT_LIB -DOT_CORE_LIB -DOT_SHARED -I/usr/share/qt4/mkspecs/1inux-g++ -T -3/usr/include/qt4/QtCore -I/usr/include/qt4/atcore -I/usr/include/qts/Qteui -I/usr/inelude/at4/gtcui -I/usr/include/ats -r. +o gliterals.o qliterals.cpp g++ -o literals qliterals.o -L/usr/1ib -19tGui -10tCore -Ipthread src/early-examples/literals> ./literals SETS FS this is one very long string so I will continue it on the next line a b\cta" TER, MADRE REIS, ERE BEAN TATE TTAB. PPE] RUE FEAT SAR, FERRE A SH. 1.12.1 5): tea, RS ERO 1.17, Fie ea) Se LF APS 1. Gnu stands for "GNU's Not UNIX". 2. Title 2 “Cat Clothing" Title 2 "Deg Dancing" 1.13 C++ fej maw CAM CHP EPH ARBITER 1.2 PH. CA CH PERRET MRED void, FAPREM EG BAAR. R12 BRRVMRR FS semen Same beet short int, float, char unsigned short double signed char int long double unsigned char unsigned int wehar_t anytype* tong int unsigned iong 28 CH RHA HHA) AATF RR, CH SAT LAE — A @ short @ long @ signed @ unsigned” CHRP SCI A MOLY FR short int, long int WRunsigned int PHY “int” FR. TU AMAKSRAMIP HY “signed” FH, AWARE. CHA Ay CHIP RTRAT CAVED char IMM AVVREERHY . RPRBEF, char AAW 1. HF FP AAG SREY 6 BEA ARK, BRL C++88) ANSV/ISO #RHE BUA THERE 1.2 PEARCE RPE A (BIN, int) MARR Lee PLES Fee (BA) dM, short). Fi—TMPRE AH sizeot(), EIR EPR MART ERM ARIK char RAWAL). EKSRRBE, —S char RAYA 8 OER. SKE RBAMNE, sizeot ()2RTMLS MU, WAT RRA. Ae 1.18 WT sizeos () MFRAURAE 32 fit x86 RAP EMR, 75H] 1.18 _src/early-examy size/gsize.« include #include include Hinclude int main) ( QTextStream cout (stdout) ; char arrayl(34] = "This is a dreaded C array of ci char array2{] = "if not for main, we could avoid it entirely. char* charp = array]; QString gstring = "This is a unicode QString. Much preferred." ; QASSERT (sizeof (i) == sizeof (int)); cout << " c¢ type sizes: \n"; cout << "sizeof (char) = " << sizeof (char) << '\n!; cout << "sizeof (wchar_t) = " << sizeof (wchar_t) << '\n'; cout << “sizeof (int) = " << sizeof (int) << '\n'; cout << “sizeof (long) << sizeof (long) << "\n! < sizeof (float) << '\: << sizeof (double) << '\n) < sizeof (double*) << '\n'; << sizeof (array) << ‘\n! cout << “sizeof (float) cout << "sizeof (double) cout << "sizeof (double* cout << "sizeof (arrayl) = cout << "eizeof (array2) cout << "sizeof (char*) = " << sizeof (charp) << endl; << sizeof (array2) << '\n D RPAP SRAM SAS MRNAS, WBN 195 Fe RAE CHa 29 cout << " gt type sizes: \n"; cout << "sizeof (QString) = " << sizeof (QString) << endl; cout << “sizeof (gint32) = " ce sizeof (qint32) << "\n"; 2 cout << "sizeof (gintes) = " << sizeof (ginté4a) << '\n'; 3 cout << "sizeof (QChar) = " << sizeof (QChar) << endl; 4 cout << "sizeof (QDate) = sizeof (QDate) << endl; cout << "qstring.length() = " << qstring.length() << endl; = 5 return 07 } 1 Haren —P ea. 2 RUEFERTAE A LAB 32 12, 3 REARAY &LABE 64 10 4 Ji char HPMEKA. SM PE PM, MPR RIRT ochar HK. SAF Bia. (example run on 32-bit system) sizeof (char) = 1 sizeof (wchar_t) = 4 sizeof (int) = 4 sizeof (long) = 4 sizeof (float) = 4 sizeof (double) = 6 sizeof (double*) = 4 sizeof (array1) = 34 sizeof (array2) = 45 sizeof (char*) = 4 at type sizes: sizeof (QString) = 4 sizeof (qint32) = 4 sizeof (qint64) © 8 sizeof (QChar) = 2 sizeof (date) = 4 gstring.length() = 42 TER. DHE HOSA, ETA, SMALL sizeof (qstring) RA 4 FW, (AER MERA RA, HULLS Length () oUESAFEBP OChar ASCH HF ochar MANA char AYRE, FLEA P Ostring TSEBRA/NE, WTKR BERRA 2. 7877, QString MBS SUM —EOEATE, LES, SESAME “IE” He —t string WR. HEAVEN (bool, char, int) {HAVEL HE limits.n PEN. Htnix RE WAM, ASCP /usr/include TF ARF. Psu: excoermomer WEEKAEAKA, WLAMHWE. RAE, ANMHEARA RELAY Ae. SHRa, CTR O, MER Be, EA RE eR ——— 30 CH QUiRHARA =) 1.13.1 main 5OiToe nain() 24@RA OMAN RK. MURATA TSK, MWA main By REBRRELE. CACHE StH main () RACHA AE ORIG, MUTE ASERE, ‘pian int main(int arge, char* argv(]) Ant main(int argCount, char ** argvalues) int main(int argc, char * const argv[]) RHEE RMEAR, EHTEL T HTS: int HERORT HOTS, TCR OPT RRALS TLRS. LLB LRMAR, ATT Rt oT SRR LGB. RG 1.192 main BF, Ceili oT SH, 7 clargs/clargs-iostream/clargs. #include #include int main (int arge, char+ argvil) { using namespace std; cout PSL return EXIT_SUCCESS; #61 main () RB, TEM 1.11 PARES See FRET 0 MESA false HH. false HEF 0. WR OTS Re MEF, UAT RAR BIS FAH clargs> ./clargs spam eggs “space wars" 123 srovt 0 is ./oteegs argv# 1 is spam argv# 2 is esgs argv# 3 is space wars argv 4 is 123 246 BASRA ABE, HBR OTT EE ERE, BALAUSMRAMRAAT . WRB TASES SETH, RUSTE BAS. UGA SRAM BE 123, RECESSES “HE” BET FEL, TURE RBI EB 1 23" RIE 123, EQ hee STS AB 1.20 LARP 1.19 HHS, EA Qt ROEM OBR, AIRES T RA ot Fi. EAN HATA. 7541.20 _ sre/clargs/at/claras.cpp #include include include int main (int arge, char* argv) { QCoreapplication app(arge, argv) ; QTextStream cout (stdout) ; QStringhist argist « app.argumenta(); cout << "age = " << arge << endl; for (int i=0; icarglst-size(); ++i) { cout << QString("argv#ti is $2") .arg(i) .arg(arglet [i]) << endl; } int num = arglst (arge - 1) .tomnt(); cout << num * 2 << endl; } FE QUITS AAR, ABARAT AB ALALAE ma in () RCP X OCoreapplication 3 32 CH Qt RHR (P=) WMH OApplication RMN—TMAR®. 8.3 TPA TRA AEE, SMT TS BHA. QCoreApplication app ZABR count Al vector WML. app SH argu FA char 34 A sveeBEM Ostring, FPP HAMRAE OstringList H(SR 4.2.1 Ts ‘8a, BEATLMt app HF arguments () BM, VFM OTS, TR 3a, RAAVAD! char BUH, MATT T PAF HOO, BRER QString MR toInt () MAK. 1.13.2 BARR 8h REA ABLREAWRABHARRRUARE. UFR ARR, CHABEART 4 PEAR RIE @ mG) © KO © RC) eR” PEE AS AF RE PRA RK, thE TE EBA CHET LAE, CHS E TS RLERH OBA. Bl an, TD xeeys SR x= x+y: CHB AAAS ET TCS 1 SEAT +) FOB 1 SL (——) 0 EAE BPERNAM MD, MEHBRSEHRRURHRAMA SAT, WE BTERNGU (GD, MEMZRSAHHRERNKARA ZT. SH RIEHA WAAL, SPRATT 4S RE BEI S eP A LARS, RLM AEH RRS HZMRAZ SAM ERUTERASBMAROE, HERR AE iee Ro ANB 1.21 BANG 125 BOR T SR CHARA z sre/arithmetic/arithmetic, 1 #include int main() { QTextStream cout (stdout) ; double x(2.23), (4.56), 2(7.89) + amt 42), 315), KOs xey: © Abe QString, QstringList MoTextstrean AMMA, HEI ccoreApplications © TI OaE 11S 8, MTOR 21 BE. FEMA ERM, Bjeme Stroustrup 1H ti T—HeATAAMABIL, RAK CH 33 cout << "x= "cee ce "\tz = "eee ce "\nk = 22" ce x > 2 xe endl | AEERIE PE PRR ALES HEAP int AeA int AHR, FE SEALE —T int AMAA. A / TR, ITs RAIA AT FPL. AA 1.22 RR TEASER Zi 1.22 _ src/arithmetic/arithmetic.cpp Cee eed cout cc kK Jia eck si cc "\tk ¥ j=" cok 89 cc endl ; cout cc Mi = Hee bce Wty et ce j ce "tk = ce k ce endl; atk [i= 8 << tek / i xc endl; wee dice Ntj et ce j ce "th "ce k ce endl; = = ced j-+ ce endl; He bce Wty = Mee fj ce Mth =H ce ke ce endly WEBI FTAA MRD) PASE RA, ABM PRE HAS 7. MaRbI 123 PATH, Hf int (HY double (HAPRAARE—* double fii, Ahi src/arithmetic/arithmetic.cop t..- cout << "Z / j= "<< z/ j ce endl ; PRAM, HPR 19 BUREAU. CHIP IRL T SASHA ACEI, APPAR ARC aetst, Sb APA E—G JR, HSURUTLUE false Raf true, LAAWAIOE. © FO © FRESE) 0 FFE © REF) © KF) © KTREST OS) AIRFARE (1), DOA ARAGR AAR. AL “5” GAAP “BR” Ga #8, TRA LTA A RTPI, REET @ (ss) e@ mCi) RO 12 : /* if Q .., else approach */ if e+ j ce 2) D HARUM RUON AeA Be 1.2. 4 CHt Qt RAAER (FIR) cout "<< 2 << endl; RI XTRA ZS, AB 125 PIRADBIT eee (boolgxpr) ? exprl : expr2 MUR boolexpr ® true, WWE expr1, AMEE expr2. 41 1.25 _ src/arithmetic/arithmetic.cpp. te. 7 /* conditional operator approach */ cout << x * k z= 939.8932 kRjn2 ke? i-2 5-4 k=8 2/3 = 11,4208 23.16 <= 45.6831 46.32 >= 18.24 1.13.3 $5]: C++ fej BIH 1. 57M, BORD AGERE, STAMOS EDC EIA AA QInputDialog KARAM MAME, J OMessageBox BmMtAR. Wis, WRI SR ret HE O~ 100°C RFRA E ECE, LA SCE 2. WRAL HS i8A+ include , MATLAB rand () BK, ERE O~ RAND_MAX WHET ASS 74} —‘MOURHBL Long int (AR, SEE “MEDEH SLPS FA TMi. RAD srand (unsigned int seed) 4% rand () PE AMF AN — MAR ER seed, HI—-N\BFMRAT RR, B ORALPMEEEBA seed MYL, Pa P42 —MUREDLEOFS 3. SUR ASAE UGE EEF EPG BIA FLASK, PLRMGERA srand (time (0) ) fea Seeee rand () B3KAY seed ff. APRA AT time (0) 38 HIME A Math AIE ER, RU BUGAT EEA, seed MAA, BPR LIRR ARS NIT RR BHF. RAE cH 35 OUTER, SUGAAT scand () ICRA. HSE, THERE | s RE AOS A, PESTA srand () RB SH BREE LEE SME, EP SHOUT RR. RAIA © RABE. © SERTRAAMA, Lh 1~6 AS. © KR KHARRA LARS A © RKMMARETR HY RIK. © RABY 7 aR LL, WSCA BE. © MR RACy 2, NTA He. © AM, RARRARS, HEHE. PARAS T SAU TL, AAR TRON 7 BRE 11. 4. GS MEE, MD CEP) SBR -ME: BRWS AAP STe HEXPT-MEIRFETE double RON. HEIR TREE. HRY PERUSE TCARTA 10 5G, SFG. 1 THAVBRTG 0.25 FG, 0.1 FE, 0.05 FG, 0.01 FER GA MLTR RAAR SME, hE Bae MR). BIN, MIB RIS 73.82 276, APTI 100 ETCH, SSR eee AEG 10 RIPHIK, 5 RIG—IK, 1 HICK, BT 0.1 H—T. 0.05 H—7-. 0.01 TEN, WA 0.25 FEAVETH . yar tk HEAR ARH BRAK (0.01 56) ABE, UA int BR. Re, AE TEE. 5. WE—MEY, WP SHAPE NER, NR LE, URC SMR. tO, Ai 12 Sew MAAN HERAT BEAR FTE e GS = & <>) > > ce) Oo ~ © D AMARA. SC ETRADERREE, JEnT ALARA RELA. 36 CH QtiRHT RA (HMR) MPABM, BORA PHAR LBS LR. BAH Si. RR, TRULIA h E O AL 1 HSESBRID) 9 HHA BAKA “AR” (The Goal), A—SaiKA “BE” (The Pit). HBA MER AH. © AR, WRU 0 SIT: RAV MRT, HMB NPBA BH HOON PARP SRE ROE 9 BMI, HARTA 12 SeRGHLA RRA, SRT ARS —FCETSRH ROK 10(6 +4), ACHR AE 73 +4), MBE 5 Beth. F— SEINP GX RORH TFTA. © AP ATP URORMERT HEGEH . — UBB D A ERRL OOR BAMALEAR, Pin, BRE “ALF 3 SHH"). MRAM “BtR” Bott GE) Ra “RABE” Seth GRID , SUE RRAAR © ALR UERER, JC R—R 0 AFT — TAT BERT SOARES), MARRS RTS Asie, BRA REA ARE). © StU, FAP A Laer Re EK. ink EAI FMS MADAM 2. ASE AE 3 WER AA-ULIOR PR RHR — RA. 1.14 const K#F SERPS const Ja, SPIE Rie. TERRA ABLE, BF const EF PARA AAR RBHETTIRELETE, const MAAR Mae. Glin const int x = 33; const int vil = {3, 6, x, 2* x}; // a conat array SEA, PARE ARERR. tex Uf error viz] = 44; Uf exxox OF AL He FR, TAT NT const FEAST RCAAS I, BRIERE AHL. RAL, MR const Bie LR initializer) 2—MBB LEME ACE MeN, LESTE, UU ECP Al. AE SBE ES POE const SURTIAERA REM ARENA “AI KX ). WRU SREB EAS, BTL Ute. ATT, HEE “BO” Hk, RMF HE, IN, AMR RS for(i = 0; 4 < 327; ++i) { } TM HES RAE CHR 37 // const declaration section of your code const int SIZE = 327; for(i = 0; i < SIZE; ++i) { Bere ERE CCHEF, THSHAHWEERRAAEREA IL, Ao char ate StRS1221; ARBBENTRBRELH, CAREK. KALOTANE, PRATER HUTHAD PEMA RAR MEBME YH const RRA RBMTHRABE HAP. ERB Ri, CHEF AMA TEA const RUAWTRE. BAER HA RMB C24. 1.15 et SAGH SASHA BISS AME. CA CHP RETR ATE RTE TRIESTE, SHARE MAU RSA. DR, HPS. H 21 RPMI IO TT MA RRR 1.15.1 —7eA eS IIR CERT AS HE CTF) LIE H Re HN AER, EMRE TE RT MSA AAR, ERRATA LTO. NN, ARATE) ine x = 5: ET UE CATION 5 MMERINIR, UURTLILRLG ak x LEER. lta sx; // symbol x now vefera to an integer with value 6 $8 A FP CAR TPIRAYCD) . —JER PUA tL LAO MLE EA, 34 HOURERROT, ITM LRT RU APPL, OUR, ox IMR OU ATFPH ARTERY ATAPUAL TE — NR, BEESON ANE (pointer) , AE SeAR ARM AAY se MeO RT SR. Ald inte y = tx; PERRIN, y HMB x, SORA ine MUTANT y 7h ine SOHUAE BE. HALEN ine RENEE y BEROMMGAR int Sie AU. HMMM IA ARE FT LLB AARP CEA) RUBE AO, AR SAR NSH Be, 4E CUPID, BASU NULL NARA (0), CLR REMMI TA EE OH SRL, UMEDA CIN RAR RCRA PIER, 0 RAIS RIRODAMAL, ZERIT 0 CUHK EE RAR AEAEET Call pointer) . Stroustrup MELEE CHEER RASAH 0 TEA NULL 6 iL A RAPA SARA. SLAM RONAN ATLA RDO ATA, SEA NRE SS-FRBLAE LE sizeof (int) MDRIMGER. FSR AUR BAS NIA BGI (dereference operator) , -4RTFRRISRAHRETM, ERIE SHR ME AEAE ORE AR 38 CH QLRHRA (H=M) Bre AST SHARE: © HURRY ERD BH, © AMIR. if 1.27 _sre/pointers/pointerdemo/pointerdemo.cpp #include int main() { QTextStream cout (stdout) ; int x= 4; Ant* px = 0; 4 PK = Bx; cout << tee ce x <<" px =" << tpx 2 ec pk = ce px <<" Spx =" ce px << endl; xextd: cout << "x =" ce x cc" tpx =" ce tx ee" px = " ce px ee endl; Spx 2 tpx + 1 cout << "x ec" tpx = ce tp ee " PX = " ce px ce endl; return 0; } 1 RBH FT. 2 —FORES| A A. ALA TAR. ooP> ./pointerdeno x = 4 *px = 4 px = OxbffFESIa apx = oxbffEt510 x= 5 *px = 5 px = Oxbffefsié x = 6 *px = 6 px = Oxbéetesi4a ce x cor eR INARA ALAR LIAR 1.27 mb, BoP Ae MEARE “Weta ZESt x WRC RSGE, MEE px MRE. | oe omeeesTO SARE Tt A A “TEBE” MALLE LS PROER. JER x A px ZHWRARA 14, HFS ATS RAE, SARA RBA LAT ae, ommetesre SOT LE, WHEE BORN. THRE See PEA AY CHR Bla dee TASTE ANAT RP HE, EAE FBI. KLE CH iis 39 0 MA A OMA. eo BOM RRERN SAW UKE. ptr: SP ATLIN, ptr BERTRAND 7 ET 115.2 ja8%} new Ml delete CHA HARE ASL PERS OLE, DORR BOO AE Se EE ATE FORA, VEC IER OANA . TNS A PACE EE A SERRA EE RA LA new 327 M3 (heap, tea) PAC AAS, FF EGE ER RTS TRS Het. WP RARE RATAE, RSM —TH Eo. delete BEAM PHERROSA KN ATPEIER MAE. delete MERIBAT EL new BERRA MBH RAS. RE RAE AM SET, UFR. MRA SRM. TUFTS BLA TERT, WA new ASL, AB RK PUPPETS. SROPEBREY El EE A Fe ERS RE TS A AT YASH BURR ANTE TR ACT ie a EAS LE, PBR ARR, aS NEESER (segmentation fault), #£ Windows "FWUR RP SHR (GPF). BFR AMER SB. ATMA SS HIRE APRRREFARRT BAMA, E, “ARK, WERK”. ARGH 1.28 PARE BOR T new Al delete 2A AFHOTE. By in Ine lete/nd: #include using namespace ata; int maing) { int* ip = 07 delete ip; 2 i£({p) cout << "non-null" << endl; else cout << "null" «« endl; ip = new int; int* jp = new int (13); 4 Mba delete ip; 5 delete jp: } 1 BiKét. 2 FARAH —§ ip MRAZ. o D ASME LRT RH, 40 CH RHA HM) 3 int Bas. 4 ARIF. 5S MIRAE, RSE ATR Seip, APP SIRES A A. PERT ETRE TIRES | FREE Tc OT KR, ARATE SWSERE A. BIN, BBA ALES eT A a TR, WHGRM, MiG MEA BTR. RRA RD, MRR TE EIS SKE, ISSSRST RRA — TEE. UR, TERIA OIE ZH, aE SRE, PR CARS . SARS, MBM CRETE — AER. MAT PHA AMEE, HEARSE BIKES | HOHE ST RRR 0. Beis Qt AREUK Boostorg +HRETSAKWER, UPUREA A. RAE RAH, B-VEMA—-ARS ATA. THE —DR, D ARR HL AAR, HT AS RRMA RAL RATA SEE A MER. GRAS REQH MHA OPointer, LAMPE HR std: :auto_ptr. 7 Boost? shared_ptr. RAR POET, HTK CHHAATERARBAE ERS, 1.15.3 3): HSA 1. BUA BA 1.29 ASH 2591.29 _ sro/point \ewdelete1. include int main() { QTextstream cout (stdout) ; const char tab = '\t'; int n= 23; int* ip = new int(n + 3); double d = 3.14; char* cp = new char(c + 5); cout << tip cc tab ce *dp << tab sometype cH MAH. ‘isn int n; int& xn =n; int AM MAHS ed2mn rn F—P int S|. SLAASERE rn ESCMER n ASI. TER, HEALEY 6 BEF TEDS OE PROS RE, TANS “MED Zc AB ET ERE AT EMER P , 5] FASE REAR] DAP Bt EY Se , (EMIT Dias. Bld int a = 10, b= 20; inte ra =a; // xa is an alias for a ra = b; // this causes a to be assigned the value 20 const int ¢ = 457 // ¢ is a constant: its value is xead-only. const intk re = ¢: 7/ legal but probably not very useful re = 10; // compiler error - const data may not be changed. EER, APPS MOO SR ee LAA, AE EE ATR, WECM ESE. 1. Rabe EI--R LL, Lh. Ak, AEE OR, BR PTB AMORA PE. 2. 4S HAM, FSM. Al, CRATER ARS ASA PSHE. Sere MTP, RHEE RRERDS RNHAWAE: Types ref (initival);

You might also like