Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«QT 4: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ GUI Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 3

Автор Жасмин Π‘Π»Π°Π½ΡˆΠ΅Ρ‚

20 мая 1995 Π³ΠΎΠ΄Π° Qt 0.90 Π±Ρ‹Π» установлСн Π½Π° сайтС sunsite.unc.edu. Бпустя ΡˆΠ΅ΡΡ‚ΡŒ Π΄Π½Π΅ΠΉ ΠΎ выпускС этой вСрсии Π±Ρ‹Π»ΠΎ объявлСно Π½Π° comp.os.linux.announce. Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° пСрвая публичная вСрсия Qt. Qt ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… ΠΊΠ°ΠΊ Windows, Ρ‚Π°ΠΊ ΠΈ Unix, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс Π±Ρ‹Π» ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π½Π° ΠΎΠ±Π΅ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Π‘ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ дня ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π΄Π²Π΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ примСнСния Qt: коммСрчСская лицСнзия ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»Π°ΡΡŒ для коммСрчСских Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, ΠΈ свободно распространяСмая вСрсия ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»Π°ΡΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ с Β«MetisΒ» сохранил компанию Β«TrolltechΒ» Π½Π° ΠΏΠ»Π°Π²Ρƒ, хотя Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΈΡ… дСсяти мСсяцСв Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ΄Π°Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ коммСрчСской Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ Qt.

Π’ ΠΌΠ°Ρ€Ρ‚Π΅ 1996 Π³ΠΎΠ΄Π° ЕвропСйскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ космичСских исслСдований (European Space Agency) стало Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠΌ Qt, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»ΠΎ Π΄Π΅ΡΡΡ‚ΡŒ коммСрчСских Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ. ВСрящиС Π² ΡƒΠ΄Π°Ρ‡Ρƒ Айрик ΠΈ Π₯Π°Π°Ρ€Π²Π°Ρ€Π΄ приняли Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Qt 0.97 Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² ΠΊΠΎΠ½Ρ†Π΅ мая, ΠΈ 24 сСнтября 1996 Π³ΠΎΠ΄Π° Π²Ρ‹ΡˆΠ»Π° вСрсия Qt 1.0. К ΠΊΠΎΠ½Ρ†Ρƒ этого Π³ΠΎΠ΄Π° Π²Ρ‹ΡˆΠ»Π° вСрсия Qt 1.1; восСмь Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² β€” всС ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… стран β€” ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΉ слоТности 18 Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ. Π’ этом Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» Ρ‚Π°ΠΊΠΆΠ΅ основан ΠœΠ°Ρ‚Ρ‚ΠΈΠ°ΡΠΎΠΌ Π­Ρ‚Ρ‚Ρ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ KDE.

ВСрсия Qt 1.2 Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² Π°ΠΏΡ€Π΅Π»Π΅ 1997 Π³ΠΎΠ΄Π°. ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎΠ΅ ΠœΠ°Ρ‚Ρ‚ΠΈΠ°ΡΠΎΠΌ Π­Ρ‚Ρ‚Ρ€ΠΈΡ‡Π΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Qt для построСния KDE ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Qt ΡΡ‚Π°Ρ‚ΡŒ фактичСским стандартом ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° Π‘++ графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² систСмС Linux. Qt 1.3 Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² сСнтябрС 1997 Π³ΠΎΠ΄Π°.

ΠœΠ°Ρ‚Ρ‚ΠΈΠ°Ρ присоСдинился ΠΊ Β«TrolltechΒ» Π² 1998 Π³ΠΎΠ΄Ρƒ, ΠΈ послСдняя значимая вСрсия Qt ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ выпуска, 1.40, появилась Π² сСнтябрС Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π³ΠΎΠ΄Π°. Qt 2.0 Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² июнС 1999 Π³ΠΎΠ΄Π°. Qt 2 ΠΈΠΌΠ΅Π»Π° Π½ΠΎΠ²ΡƒΡŽ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ для ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° β€” Q Public License (QPL), которая соотвСтствовала ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° (Open Source Definition). Π’ августС 1999 Π³ΠΎΠ΄Π° Qt Π²Ρ‹ΠΈΠ³Ρ€Π°Π»Π° ΠΏΡ€Π΅ΠΌΠΈΡŽ ΠΆΡƒΡ€Π½Π°Π»Π° Β«Linux WorldΒ» Π·Π° Π»ΡƒΡ‡ΡˆΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ срСдство. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² это ΠΆΠ΅ врСмя Π±Ρ‹Π»Π° ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π° компания Β«Trolltech Pty LtdΒ» (Австралия).

Компания Β«TrolltechΒ» выпустила Qtopia Core (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΡƒΡŽ Π·Π°Ρ‚Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Qt/Embedded) Π² 2000 Π³ΠΎΠ΄Ρƒ. Она спроСктирована для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° устройствах с систСмой Embedded Linux ΠΈ обСспСчиваСт свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ систСму Π² качСствС ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ‹ X11. Как Qt/X11, Ρ‚Π°ΠΊ ΠΈ Qtopia Π‘ΠΎrΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнной общСдоступной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GNU β€” General Public License (GPL), a Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° условиях коммСрчСских Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ. К ΠΊΠΎΠ½Ρ†Ρƒ 2000 Β«TrolltechΒ» ΡƒΡ‡Ρ€Π΅Π΄ΠΈΠ»Π° компанию Β«Trolltech Inc.Β» (БША) ΠΈ выпустила ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Qtopia β€” ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈ ΠΊΠ°Ρ€ΠΌΠ°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². Qtopia Π‘ΠΎrΠ΅ Π±Ρ‹Π» удостоСн ΠΏΡ€Π΅ΠΌΠΈΠΈ ΠΆΡƒΡ€Π½Π°Π»Π° Β«Linux WorldΒ» Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Β«Π›ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для систСмы Embedded LinuxΒ» Π² 2001 ΠΈ 2002 Π³ΠΎΠ΄Π°Ρ…, a Qtopia Phone ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€Π΅ΠΌΠΈΡŽ Π² 2004 Π³ΠΎΠ΄Ρƒ.

Qt 3.0 Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² 2001 Π³ΠΎΠ΄Ρƒ. Qt Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π² систСмах Windows, Mac OS X, Unix ΠΈ Linux (для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ встроСнных систСм). Qt 3 содСрТала 42 Π½ΠΎΠ²Ρ‹Ρ… класса, ΠΈ объСм Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π» 500 000 строк. Qt 3 прСдставляла собой Π²Π°ΠΆΠ½Ρ‹ΠΉ шаг Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Qt 2, которая, Π² частности, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Unicode, Π²Π²Π΅Π»Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΏΠΎ просмотру ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ тСкста ΠΈ класс рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… примСняСмым языкам Perl. Qt 3 Π±Ρ‹Π»Π° удостоСна ΠΏΡ€Π΅ΠΌΠΈΠΈ Β«Software Development TimesΒ» Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ «Высокая ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΒ» Π² 2002 Π³ΠΎΠ΄Ρƒ.

Π›Π΅Ρ‚ΠΎΠΌ 2005 Π³ΠΎΠ΄Π° Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡˆΠ΅Π½Π° Qt 4.0. ИмСя ΠΎΠΊΠΎΠ»ΠΎ 500 классов ΠΈ Π±ΠΎΠ»Π΅Π΅ 9000 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Qt 4 оказалась большС ΠΈ Π±ΠΎΠ³Π°Ρ‡Π΅ любой ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии; ΠΎΠ½Π° Π±Ρ‹Π»Π° Ρ€Π°Π·Π±ΠΈΡ‚Π° Π½Π° нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΈΠΌ части Qt. ВСрсия Qt 4 прСдставляСт собой большой шаг Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями; ΠΎΠ½Π° содСрТит ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ эффСктивных ΠΈ простых Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ классов—контСйнСров, ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ модСль/прСдставлСниС, быстрый ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ 2D ΠΈ ΠΌΠΎΡ‰Π½Ρ‹Π΅ классы для просмотра ΠΈ рСдактирования тСкста Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Unicode, Π½Π΅ говоря ΡƒΠΆΠ΅ ΠΎ тысячах Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎ всСму спСктру классов Qt. Qt 4 являСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсиСй Qt, доступной Π½Π° всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΊΠ°ΠΊ для коммСрчСской Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² 2005 Π³ΠΎΠ΄Ρƒ компания Β«TrolltechΒ» ΠΎΡ‚ΠΊΡ€Ρ‹Π»Π° своС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π² ПСкинС для прСдоставлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π² ΠšΠΈΡ‚Π°Π΅ ΠΈ Π²ΠΎ всСм этом Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ услуг ΠΏΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ΅, ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈ тСхничСской ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Qtopia.

Π‘ΠΎ дня образования ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Β«TrolltechΒ» ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Qt постоянно росла, ΠΈ ΠΎΠ½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ расти Π² наши Π΄Π½ΠΈ. Π­Ρ‚ΠΎΡ‚ успСх являСтся ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊ качСства Qt, Ρ‚Π°ΠΊ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Π΅Π΅ использовании. Π—Π° послСднюю Π΄Π΅ΠΊΠ°Π΄Ρƒ Qt ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ ΠΈΠ· «сСкрСтного» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, извСстного Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ профСссионалов, Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ тысячи коммСрчСских Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΈ дСсятки тысяч Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Π§Π°ΡΡ‚ΡŒ I. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Qt

Π“Π»Π°Π²Π° 1. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ знакомство

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создания простого прилоТСния с графичСским интСрфСйсом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (GUI β€” graphical user interface), ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ срСдства Π‘++ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями Qt. Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Qt: сигналы ΠΈ слоты (signals and slots) ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° графичСских элСмСнтов (layout). Π’ Π³Π»Π°Π²Π΅ 2 ΠΌΡ‹ рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ возмоТности Qt, Π° Π² Π³Π»Π°Π²Π΅ 3 ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ рСалистичноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Если Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ c Java ΠΈΠ»ΠΈ C#, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ лишь ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘++, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π‘, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ даСтся Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π‘++.

«Здравствуй, QtΒ»

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с ΠΎΡ‡Π΅Π½ΡŒ простой Qtβ€”ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ способы Π΅Π΅ компиляции ΠΈ выполнСния.

01 #include <QApplication>

02 #include <QLabel>

03 int main(int argc, char *argv[])

04 {

05 QApplication app(argc, argv);

06 QLabel *label = new QLabel("Hello Qt!");

07 label->show();

08 return app.exec();

09 }

Π’ строках 1 ΠΈ 2 Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ опрСдСлСния классов QApplication ΠΈ QLabel. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Qt—класса имССтся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ (с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ рСгистра), содСрТащий ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этого класса.

Π’ строкС 5 создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ QApplication для управлСния всСми рСсурсами прилоТСния. Для конструктора QApplication Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ argc ΠΈ argv, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Qt сама ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π’ строкС 7 создаСтся Β«Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Β» тСкстовая ΠΌΠ΅Ρ‚ΠΊΠ° QLabel, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран сообщСниС Β«Hello Qt!Β» (здравствуй, Qt). По Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Qt ΠΈ Unix Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ (widget) называСтся любой Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ происходит ΠΎΡ‚ Β«window gadgetΒ» ΠΈ соотвСтствуСт элСмСнту управлСния (Β«controlΒ») ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ (Β«containerΒ») ΠΏΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Windows. Кнопки, мСню, полосы ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ². Одни Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. НапримСр, ΠΎΠΊΠ½ΠΎ прилоТСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ, содСрТащим QMenuBar (панСль мСню), нСсколько QToolBar (панСль инструмСнтов), QStatusBar (строка состояния) ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ QMainWindow ΠΈΠ»ΠΈ QDialog Π² качСствС ΠΎΠΊΠ½Π° прилоТСния, ΠΎΠ΄Π½Π°ΠΊΠΎ Qt Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π³ΠΈΠ±ΠΊΠ°, Ρ‡Ρ‚ΠΎ любой Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ QLabel являСтся ΠΎΠΊΠ½ΠΎΠΌ прилоТСния.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° 7 Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ всСгда ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ сначала Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ, ΠΈ поэтому Π΄ΠΎ нСпосрСдствСнного Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… ΠΈ Ρ‚Π΅ΠΌ самым Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ мСрцания экрана.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° 8 обСспСчиваСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ управлСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Qt. Π’ этом мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий, Ρ‚.Π΅. Π² своСго Ρ€ΠΎΠ΄Π° Ρ€Π΅ΠΆΠΈΠΌ «простоя», оТидая со стороны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‚Π°ΠΊΠΈΡ… дСйствий, ΠΊΠ°ΠΊ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ ΠΌΡ‹ΡˆΠΊΠΈ ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅.

Для простоты ΠΌΡ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° delete для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° QLabel Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main(). Подобная ΡƒΡ‚Π΅Ρ‡ΠΊΠ° памяти Π² Ρ‚Π°ΠΊΠΎΠΉ нСбольшой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±Π΅Π·Π²Ρ€Π΅Π΄Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ эта ΠΏΠ°ΠΌΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой.

Рис. 1.1. Π’Ρ‹Π²ΠΎΠ΄ привСтствия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Hello Π² систСмС Linux

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° своСй машинС. Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Qt 4.1.1 (ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ позднюю Π²Π΅Ρ€ΡΠΈΡŽ Qt 4); процСсс установки рассмотрСн Π² ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ А. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ установили Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Qt 4 ΠΈ Π΅Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ bin занСсСн Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния PATH. (Π’ систСмС Windows это дСлаСтся автоматичСски ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ установки Qt.) Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ потрСбуСтся ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» hello.cpp с исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Hello Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ hello. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» hello.cpp Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π²Π·ΡΡ‚ΡŒ Π΅Π³ΠΎ с ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΊΠ½ΠΈΠ³ΠΈ; Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дискС этот исходный ΠΊΠΎΠ΄ находится Π² Ρ„Π°ΠΉΠ»Π΅ /examples/chap01/hello/hello.cpp.