· 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
Good news from afar can bring you a welcome visitor.


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