· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
QT Programming Introduction



Qt´Â ¿©·¯ Ç÷§Æû¿¡ °ÉÃÄ ¼Ò½º ÄÚµå ȣȯ¼ºÀ» Á¦°øÇÏ´Â ( Qt¶óÀ̺귯¸®¸¸À» »ç¿ëÇÏ¿© ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´À» °æ¿ì) ÇÁ·¹ÀÓ¿öÅ©ÀÔ´Ï´Ù. À©µµ¿ì ¹× ¸®´ª½º µ¥½ºÅ©Å¾ ȯ°æ¿¡¼­ °ÅÀÇ µ¿ÀÏÇÑ UI Look&Feel ¹× ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. Qt¸¦ »ç¿ëÇϱâ À§Çؼ­´Â Qt ¶óÀ̺귯¸® ¹× °³¹ßÅø(qmake) ¿Ü¿¡ UI»ý¼ºÀ» À§ÇÑ Qt Designer ¿Í ·¹ÆÛ·±½º¸¦ À§ÇÑ Qt Assistance°¡ ÇÊ¿äÇÕ´Ï´Ù.


Qt Designer ¿¡¼­ UI¿Í UIÀÇ ±â´ÉÀ» Á¤ÀÇÇÒ ¼ö ÀÖÀ¸¸ç C/C++À» »ç¿ëÇÏ¿© µ¿ÀÛÀ» Á¤ÀÇÇÕ´Ï´Ù. ¸ðµç ui À©µµ¿ì ¹× ÄÁÆ®·Ñ - ¹öÆ°, üũ¹Ú½º µîµî - ´Â °´Ã¼ÀÌ¸ç °´Ã¼ÀÇ ¼Ó¼ºÀ» º¯°æÇÏ°í ±× °´Ã¼ÀÇ member function À» È£ÃâÇÏ¿© º¯È­¸¦ ÁÙ ¼ö ÀÖ½À´Ï´Ù. °¢°¢Àº c++Ŭ·¡½º·Î Á¤ÀǵǾî ÀÖ°í, Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ ±â´ÉµéÀ» ÀçÁ¤ÀÇ ÇÔÀ¸·Î¼­ »õ·Î¿î À©µµ¿ì ¹× ÄÁÆ®·ÑÀ» »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.


¿ì¸®°¡ MS Windows¿¡¼­ º¸´Â ¹öÆ°,ÅؽºÆ®¹Ú½ºµîÀÇ ÄÁÆ®·ÑµéÀ» qt¿¡¼­´Â widgetÀ̶ó°í ºÎ¸¨´Ï´Ù. ¸ðµç widgetµéÀº ºÎ¸ð/ÀÚ½Ä °ü°è¸¦ ÀÌ·ç°í ´Ù¸¥ widgetÀ» Æ÷ÇÔÇϰųª ´Ù¸¥ widget¿¡ Æ÷ÇԵ˴ϴÙ. ±×·¯ÇÑ widgetµéÀ» Qt Designer¸¦ ÀÌ¿ëÇÏ¿© Á¤ÀûÀ¸·Î »ý¼ºÇϰųª, ÄÚµå»ó¿¡¼­ QWidgetÀ̳ª QWidget¿¡¼­ »ó¼Ó¹Þ¾Æ »ý¼ºµÈ Ŭ·¡½ºµéÀ» µ¿ÀûÀ¸·Î »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.


widgetÀº ¸ðµç ÄÁÆ®·ÑµéÀÇ ±âÃÊ°¡ µË´Ï´Ù. widgetÀº À©µµ¿ì ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ¸¶¿ì½º,Å°º¸µå ±×¸®°í ¿©·¯ À̺¥Æ® ÅëÁö¸¦ ¹Þ°í ½º½º·ÎÀÇ ¸ð½ÀÀ» È­¸é¿¡ ±×¸³´Ï´Ù. ¸ðµç widgetÀº »ç°¢ÇüÀÇ ¸ð¾çÀ̸ç, Z-Order¿¡ ÀÇÇØ Á¤·ÄµË´Ï´Ù.(È­¸é ¾ÕµÚ ¼ø¼­) ´Ù¸¥ widget¿¡ ÀÇÇØ ¼ÒÀ¯µÇÁö ¾ÊÀº widgetÀ» top-level widgetÀ̶ó°í ºÎ¸¨´Ï´Ù. º¸Åë top-level widgetÀº ÇÁ·¹ÀÓ°ú ŸÀÌƲ¹Ù¸¦ °¡Áø À©µµ¿ì°¡ µË´Ï´Ù. qt¿¡¼­´Â QMainWindow¿Í QDialog, QDialog¸¦ »ó¼Ó¹Þ¾Æ »ý¼ºµÈ Ŭ·¡½ºµéÀÌ top-level window°¡ µË´Ï´Ù. top-level widgetÀÌ ¾Æ´Ñ widgetÀ» child widgetÀ̶ó°í ºÎ¸¨´Ï´Ù.º¸Åë ºÎ¸ð widgetÀ¸·ÎºÎÅÍ ÀÚ½Ä widgetÀ» ½Ã°¢ÀûÀ¸·Î ±¸º°Çϱ⠾î·Æ½À´Ï´Ù. QWidgetÀº »ý¼ºÇÒ ¶§ ºÎ¸ð widget ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁÖ°Ô µÇ¾î ÀÖ½À´Ï´Ù. »ý¼ºÀÚ¸¦ ÀÌ¿ëÇÏ¿© widget°£ÀÇ ºÎ¸ð/ÀÚ½Ä °ü°è¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.


ui´Â *.ui ÆÄÀÏ°ú uiÀÇ µ¿ÀÛÀ» Á¤ÀÇÇÏ´Â *.ui.h ÆÄÀÏ·Î ±¸¼ºµË´Ï´Ù. *.ui ÆÄÀÏÀº µðÀÚÀÎÀÌ ÀúÀåµÇ°í *.ui.h¿¡´Â uiÀÇ µ¿ÀÛÀÌ c++·Î Á¤ÀǵǾî ÀúÀåµË´Ï´Ù.



2. ½ÃÀÛÇϱâ :


Qt Designer¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°Àº âÀÌ ¶å´Ï´Ù.

s1.png
[PNG image (134.67 KB)]




Qt UI¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥À» »ý¼ºÇϱâ À§Çؼ­´Â UI µðÀÚÀÎ ÆÄÀÏ(ÆÄÀÏÀ̸§ÀÌ *.ui ÀÓ) °ú UIÀÇ µ¿ÀÛÀ» Á¤ÀÇÇÏ´Â ÄÚµå ÆÄÀÏ(ÆÄÀÏ À̸§ÀÌ *.ui.h)°ú ÇÁ·Î±×·¥ÀÇ Àüü °ñ°ÝÀ» °¡Áö°í ÀÖ´Â ÇÁ·ÎÁ§Æ® ÆÄÀÏ(*.pro)¿Í Qt ¾îÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÏ´Â ¸ÞÀÎ ¿£Æ®¸® ÆÄÀÏ(main.cpp)°¡ ±âº»ÀûÀ¸·Î Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù.


¸ÕÀú ui ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù.(File->New->Dialog ¼±ÅÃ)
s2.png
[PNG image (120.36 KB)]



Qt Designer ¸ÞÀÎ È­¸é
tool_overview.png
[PNG image (137.72 KB)]



»ý¼ºµÈ form È­¸éÀÌ º¸ÀÔ´Ï´Ù. È­¸éÀÇ ¿À¸¥ÂÊ¿¡ properties¸¦ º¸¸é ÇöÀç focusingµÈ °´Ã¼µéÀÇ ¼Ó¼ºµéÀ» º¯°æ ÇÒ ¼ö Àִµ¥ »ý¼ºµÈ formÀ» Ŭ¸¯ÇÏ°í properties¿¡ º¸¸é form ÀÇ À̸§ÀÌ form? ÀÌ·± ½ÄÀ¸·Î µÇ¾î ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. formÀÇ À̸§À» Àû´çÇÏ°Ô º¯°æÇÕ´Ï´Ù. µðÀÚÀÎÀ» º¸¸é form? ÀÌ·¸°Ô â ÅؽºÆ®¿¡ À̸§ÀÌ ÀûÇô ÀÖ½À´Ï´Ù. ÇØ´ç ºÎºÐÀ» °íÄ¡±â À§Çؼ­´Â Caption ¼Ó¼ºÀ» º¯°æÇÕ´Ï´Ù.


formÀ» »ý¼ºÇÏ¿´´Ù¸é ¼±ÅÃÇؼ­ ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÕ´Ï´Ù. (File->New->Project) ÇÁ·ÎÁ§Æ® ÆÄÀÏÀº *.pro·Î À̸§Áö¿öÁö¸ç ÇÁ·ÎÁ§Æ®¸¶´Ù Æú´õ¸¦ µû·Î »ý¼ºÇؼ­ °ü¸®ÇÏ´Â °ÍÀÌ ÆíÇÕ´Ï´Ù. ¿À¸¥ÂÊ Ã¢¿¡ project overview âÀÌ ÀÖÀ¸¸ç ÇØ´ç ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔµÈ ui,uiµ¿ÀÛ ÄÚµå, main.cppÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦ È®ÀÎÇÏ°í Ç׸ñÀ» Ãß°¡/»èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌÁ¦´Â ÇØ´ç formÀ» ¸ÞÀÎ À©µµ¿ì·Î »ç¿ëÇÒ cppÇÁ·Î±×·¥ ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù. (File->New->C++ Main-File)

s3.png
[PNG image (97.37 KB)]


ÇÁ·Î±×·¥ ÆÄÀÏÀ» »ý¼ºÇÒ ¶§ ¸ÞÀΠâÀ¸·Î ¼³Á¤ÇÒ À©µµ¿ì À̸§À» °í¸¦ ¼ö ÀÖ½À´Ï´Ù.


¿À¸¥ÂÊ À§ project overview â¿¡ uiÆÄÀÏ°ú main.cppÆÄÀÏÀÌ µî·ÏµÇ¾î ÀÖ´Â °ÍÀ» È®ÀÎÇϼ¼¿ä. »ý¼ºµÈ main.cppÆÄÀÏÀÇ ³»¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù.



#include < qapplication.h >
#include "form_main.h"  

int main( int argc, char ** argv )
{
    QApplication a( argc, argv ); 
    Form_Main w; 
    w.show(); 
    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); 
    return a.exec(); 
}





QT¸¦ ÀÌ¿ëÇÏ´Â ¸ðµç ¾ÖÇø®ÄÉÀ̼ÇÀº QApplication °´Ã¼¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. QApplicationÀº Qt¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥ÀÇ Àü¿ªÀûÀÎ ÀÚ¿øµéÀ» °ü¸®ÇÕ´Ï´Ù. qapplication.h ¾È¿¡ Á¤ÀǵǾî ÀÖ½À´Ï´Ù. Form_Main À©µµ¿ì¸¦ »ý¼ºÇÏ°í ÀÌ°ÍÀÌ ¸ÞÀÎ À©µµ¿ì°¡ µË´Ï´Ù. Show()ÇÔ¼ö¸¦ È£ÃâÇØ¾ß À©µµ¿ì°¡ È­¸é¿¡ Ãâ·ÂµË´Ï´Ù.


Qt¿¡¼­ À̺¥Æ®¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀº Signal/Slot À¸·Î ÀÌ·ç¾îÁø ConnectionÀ̶ó´Â Á÷°üÀûÀÎ ¹æ¹ýÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. ¾î¶°ÇÑ À̺¥Æ®°¡ ¹ß»ýÇÑ °Í¿¡ ´ëÇØ, ±× À̺¥Æ®°¡ ¹ß»ýÇÑ widget(Sender)ÀÇ Signal¿¡ ÀÇÇØ Æ®¸®°Å¸µµÉ widget(Receiver)ÀÇ SlotÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â °ÍÀÔ´Ï´Ù. Signal/SlotÇÔ¼ö´Â Widget µîÀÇ Å¬·¡½º¿¡ ¹Ì¸® Á¤ÀǵǾî Àֱ⵵ ÇÏ°í ÀÓÀÇ·Î Ãß°¡ÇÒ ¼öµµ ÀÖ½À´Ï´Ù

<À̺¥Æ®°¡ ¹ß»ýµÉ °´Ã¼><¹ß»ýµÇ´Â À̺¥Æ®> <À̺¥Æ®¸¦ ó¸®ÇÒ °´Ã¼><È£ÃâµÉ ÇÔ¼ö>

¾Õ¿¡¼­ºÎÅÍ ¼ø¼­´ë·Î Sender , Signal() , Receiver , Slot() °¡ µË´Ï´Ù.



a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); 


ÀÌ ÄÚµå´Â QApplication °´Ã¼ a¿¡¼­ lastWindowClosedÀ̺¥Æ®°¡ ¹ß»ýµÇ¸é a.quit()ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï À̺¥Æ®¸¦ ¿¬°áÇÏ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÇÁ·Î±×·¥ÀÇ Ã¢ÀÌ ¸ðµÎ ´ÝÈ÷°Ô µÇ¸é ÇÁ·Î±×·¥ÀÌ Á¾·áµÇµµ·Ï signal°ú slotÀÌ ¿¬°áµË´Ï´Ù.


ÀÌ·¸°Ô Çؼ­ ÇÁ·ÎÁ§Æ®¿¡ ¸ÞÀÎ À©µµ¿ì¿Í main.cppÆÄÀÏÀÌ »ý¼ºµÇ¾î µî·ÏµÇ¾úÀ¸¸é ÇÁ·Î±×·¥À» ºôµåÇؼ­ ½ÇÇàÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. ÆÄÀϵéÀÌ Á¸ÀçÇÏ´Â µð·ºÅ丮·Î À̵¿ÇÏ¿©, ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ MakefileÀ» »ý¼ºÇØ¾ß Çϴµ¥ qmake ¸í·ÉÀ¸·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù. »ý¼ºµÈ MakefileÀ» ÀÌ¿ëÇÏ¿© ºôµåÇÏ¸é ½ÇÇàÆÄÀÏÀÌ »ý¼ºµË´Ï´Ù.

s6.png
[PNG image (127.37 KB)]





¹è¿ì¸é¼­ ÀÛ¼ºÇÏ´Â °ÍÀ̶ó À߸øµÈ ³»¿ëÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¿À·ù°¡ ÀÖÀ¸¸é, firsttimelove@hotmail.com À¸·Î ¾Ë·ÁÁÖ½Ã¸é ºü¸£°Ô °íÄ¡µµ·Ï ÇÏ°Ú½À´Ï´Ù. ÁÁÀº ÇÏ·ç µÇ¼¼¿ä


Áú¹®: ¿©±â¿¡ ¾²¿© ÀÖ´Â ³»¿ëÀº Qt 3 ±âÁØÀε¥, Á» ÀÖÀ¸¸é Qt 3Àº deprecated µÈ´Ù°í ¾Ë°í ÀÖ°í, ÃÖ½ÅÀÇ ¹öÀü Qt 4´Â Qt 3°ú ¹ÙÀ̳ʸ®/¼Ò½º ȣȯÀÌ µÇÁö ¾Ê½À´Ï´Ù. ÀÌ »ç½ÇÀ» ¸í½ÃÇØ¾ß ÇÒ °Í °°½À´Ï´Ù. --peremen

---Çã°Æ...! È®ÀÎÇÏ°í ¼öÁ¤Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù. °¨»çÇÕ´Ï´Ù~ ¿ø·¡ ÀÖ´ø ±ÛÀº óÀ½ À§Å°¸¦ ½áº¸´À¶ó ±×¸² »çÀÌÁ Á¶Àý ¾ÈÇÏ°í ¿Ã·Á¼­ Áö¿ü°í Áú¹®Àº ÀÌÂÊÀ¸·Î ±Ü¾î¼­ ºÙ¿´½À´Ï´Ù.


ID
Password
Join
Try to divide your time evenly to keep others happy.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2007-10-30 01:08:20
Processing time 0.0055 sec