QT Tutorial
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.


ÀÌ ¹®¼­´Â QTŸŶÀ» ÀÌ¿ëÇÑ GUI ÇÁ·Î±×·¡¹ÖÀÇ ¼Ò°³¸¦ À§ÇØ ÀÛ¼ºµÇ¾ú´Ù. QTÇÁ·Î±×·¡¹Ö¿¡ ÀÌÁ¦ ¸· ÀÔ¹®ÇÏ·Á´Â °³¹ßÀÚ¿¡°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù. QT¸¦ ¾ÆÁ÷ Á¢ÇØ º»ÀûÀÌ ¾ø´Ù¸é ÀÌ ¹®¼­¸¦ Àбâ Àü¿¡ QT WhitepaperÀ» ¸ÕÀú ÀÐ¾î º¸±â¹Ù¶õ´Ù.

À̹®¼­¸¦ QT Assistant¿Í ÇÔ²² ÀÐÀ¸¸é ¸¹Àº µµ¿òÀÌ µÉ°ÍÀÌ´Ù. QT Assistant¿¡ ´ëÇÑ ³»¿ëÀº QT WhitepaperÀ» Âü°íÇϱ⠹ٶõ´Ù.

QT ¹Ì´Ï»çÀÌÆ®·Î

Contents

1 ¾È³ç ¼¼»ó!
1.1 ÁÙ´ÜÀ§ ¼³¸í
1.2 ÄÄÆÄÀÏ
1.3 ¿¬½À
2 Á¾·á¹öưÀÇ ÀÛ¼º
2.1 ÁÙ´ÜÀ§ ¼³¸í
2.2 ¿¬½À
3 (À§Á¬ °ü°è)Family Values
3.1 ÁÙ´ÜÀ§ ºÐ¼®
3.2 ¿¬½À
4 À§Á¬ °¡Áö°í ³î±â
4.1 ÁÙ´ÜÀ§ ¼³¸í
4.2 ¿¬½À
5 ºí·°ÀÇ »ý¼º
5.1 ÁÙ´ÜÀ§ ºÐ¼®
5.2 ÀÛµ¿ Å×½ºÆ®
5.3 ¿¬½À
6 ¸¹Àº ºí·°ÀÇ Á¦ÀÛ°ú ¹è¿­
6.1 ÁÙ´ÜÀ§ ¼³¸í

1 ¾È³ç ¼¼»ó!

óÀ½ ÀÛ¼ºÇÒ ÇÁ·Î±×·¥Àº Àú À¯¸íÇÑ hello worldÃâ·ÂÀÇ QT¹öÁ¯ÀÌ´Ù. ±×·¯³ª hello world·Î ÇÏ¸é ³Ê¹« ½É½ÉÇÒ°Í °°¾Æ¼­ ¾È³ç ¼¼»ó!À» Ãâ·ÂÇϵµ·Ï Çß´Ù. ´ÙÀ½Àº ½ÇÇà½ÃŲ ÇÁ·Î±×·¥ÀÇ ½ºÅ©¸° ¼¦ÀÌ´Ù.

http://www.joinc.co.kr/albums/album01/aha.png

#include <qapplication.h> 
#include <qpushbutton.h> 
#include <qstring.h> 
 
int main(int argc, char **argv) 
{ 
    QApplication a(argc, argv); 
    QPushButton hello(QString::fromLocal8Bit("¾È³ç ¼¼»ó!"), 0); 
    hello.resize(100, 30); 
 
    a.setMainWidget(&hello); 
    hello.show(); 
    return a.exec(); 
} 
 

1.1 ÁÙ´ÜÀ§ ¼³¸í

#include <qapplication.h> 
 
QApplication Ŭ·¡½º°¡ ¼±¾ðµÈ ÀÎŬ·çµå ÆÄÀÏÀÌ´Ù. QT¸¦ ÀÌ¿ëÇÏ´Â ¸ðµç ¾ÖÇø®ÄÉÀ̼ÇÀº QApplicationÀ» ÇÊ¿ä·Î ÇÑ´Ù. ±×·¯¹Ç·Î ¹Ýµå½Ã Æ÷ÇԵǾî¾ßÇÒ ÀÎŬ·çµå ÆÄÀÏÀÌ´Ù. QApplicationÀº ±âº»ÆùÆ®¿Í, Ä¿¼­¿Í °°Àº ¾ÖÇø®ÄÉÀÌ¼Ç Àü¿ªÀûÀÎ ÀÚ¿øµéÀ» °ü¸®ÇÏ°Ô µÈ´Ù.

#include <qpushbutton.h> 
 
QPushButtonŬ·¡½º°¡ ¼±¾ðµÈ ÀÎŬ·çµå ÆÄÀÏÀÌ´Ù.

QPushButtonÀº Ǫ½¬ ¹öưÀ» ±¸ÇöÇϱâ À§Çؼ­ »ç¿ëµÇ´Â Ŭ·¡½º´Ù. À̰ÍÀº ´Ù¸¥ ¸ðµç À§Á¬ÀÌ ±×·¯ÇϵíÀÌ ÀڽŸ¸ÀÇ look and feelÀ» °ü¸®ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¡¸Ó´Â »ö°ú °°Àº ¿ä¼ÒµéÀ» Á¶Á¤ÇÔÀ¸·Î½á Ǫ½¬ ¹öưÀÇ look and feelÀ» Á¶Á¤ÇÒ ¼ö ÀÖ´Ù. Ãâ·ÂµÇ´Â ¹®ÀÚ´Â ´Ü¼øÇÑ ÅØ½ºÆ®µµ °¡´ÉÇϸç QPixmapÀÇ À̿뵵 °¡´ÉÇÏ´Ù.

int main(int argc, char **argv) 
{ 
 
main()ÇÔ¼ö´Â ¸ðµç ÇÁ·Î±×·¥¿¡¼­ ÇÊ¿ä·Î ÇÑ´Ù. QT¶óÀ̺귯¸®¸¦ È£ÃâÇϱâÀü¿¡ ÇÊ¿äÇÑ ¿©·¯°¡Áö ÃʱâÈ­ °ªµîÀ» Àü´ÞÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù.

argc´Â ¸í·ÉÇà ÀÎÀÚÀÇ °¹¼öÀ̰í argv´Â ¸í·ÉÇà ÀÎÀÚÀÇ ¹è¿­ÀÌ´Ù. À̰͵éÀº C/C++ÀÇ ±âº»ÀûÀÎ ¸ð½ÀÀ¸·Î, QT¿¡ ƯȭµÈ ¸ð½ÀÀº ¾Æ´Ï´Ù. ¾î¶µç QT ¾ÖÇø®ÄÉÀ̼ÇÀº ¹Ýµå½Ã ÀÌµé º¯¼ö¸¦ ÇÊ¿ä·Î ÇÑ´Ù.
QApplication a(argc, argv); 
 
a´Â ÀÌ ÇÁ·Î±×·¥ÀÇ QApplicationÀÌ´Ù.

QPushButton hello(QString::fromLocal8Bit("¾È³ç ¼¼»ó!"), 0); 
 
QApplicationÈÄ¿¡ óÀ½ µîÀåÇÏ´Â À©µµ¿ì ½Ã½ºÅÛ ÄÚµå·Î Ǫ½¬ ¹öưÀ» »ý¼ºÇÑ´Ù. ÀÌ Çª½¬¹öưÀº "¾È³ç ¼¼»ó!"À»Ãâ·ÂÇÏ°Ô µÈ´Ù. µÎ¹øÂ° ÀÎÀÚ·Î ÁÖ¾îÁø 0Àº Ǫ½¬¹öư ÀÚ½ÅÀÌ ºÎ¸ð À©µµ¿ì°¡ µÈ´Ù´Â ¶æÀÌ´Ù. Ǫ½¬ ¹öưÀÇ Å©±â¸¦ º¯°æÇϱâ À§Çؼ­ ¾Æ·¡ÀÇ Äڵ带 »ç¿ëÇß´Ù.
hello.resize(100,30); 
 
ÀÌ ¹öưÀº 100pixelÀÇ ³ÐÀÌ¿Í 30pixelÀÇ ³ôÀ̸¦ °¡Áö°Ô µÈ´Ù.

a.setMainWidget(&hello); 
 
Ǫ½¬¹öưÀ» ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¸ÞÀÎ À§Á¬À¸·Î ¼±¾ðÇÑ´Ù. ¸¸¾à À¯Àú°¡ ¸ÞÀÎ À§Á¬À» ´Ý°Ô µÇ¸é ¾ÖÇø®ÄÉÀ̼ÇÀº Á¾·áÇÏ°Ô µÉ °ÍÀÌ´Ù.

¸ÞÀÎ À§Á¬À» »ý¼ºÇß´Ù¸é À̰ÍÀ» Ãâ·ÂÇÒ°ÍÀ» ¸í½ÃÇÑ´Ù.
hello.show(); 
 
setMainWidget¸¦ ÀÌ¿ëÇØ¼­ ¸ÞÀÎ À§Á¬À» ¸¸µé¾ú´Ù°í ÇØ¼­ À̰ÍÀÌ Áï½Ã È­¸é¿¡ Ãâ·ÂµÇÁö´Â ¾Ê´Â´Ù ¹Ýµå½Ã show()¸¦ È£ÃâÇØ¾ßÁö¸¸ ºñ·Î¼­ È­¸é¿¡ Ãâ·ÂÀÌ µÈ´Ù.

return a.exec(); 
 
QTÀÇ Á¦¾î±ÇÀ» main()¿¡ ³Ñ±ä´Ù. À̶§ ¾ÖÇø®ÄÉÀ̼ÇÀÇ Á¾·á °ªµµ ³Ñ°ÜÁÖ°Ô µÈ´Ù.

1.2 ÄÄÆÄÀÏ

# g++ -c -pipe -Wall -W -O2 -DNO_DEBUG -I/usr/lib/qt-3.2/include -o hello.o hello.cc 
# g++  -o hello hello.o   -L/usr/lib/qt-3.2/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -l 
 
À§¿Í °°Àº ¹æ¹ýÀ¸·Î ¼ö°í½º·´°Ô ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖ°ÚÁö¸¸, ¿©±â¿¡¼­´Â MakefileÀ» ÀÌ¿ëÇÒ °ÍÀÌ´Ù. MakefileÀÇ ÀÛ¼º°ú »ç¿ë¹æ¹ýÀº Make »ç¿ëÇϱâ (2)¸¦ Âü°íÇϱ⠹ٶõ´Ù.

1.3 ¿¬½À

À©µµ¿ìÀÇ Å©±â¸¦ º­°æÇغ¸ÀÚ. ¹öưÀ» ´­·¯º¸ÀÚ. ¸¸¾à X Windows »ó¿¡¼­ Ãâ·ÂÇÑ´Ù¸é -geometry ¿É¼ÇÀ» ÀÌ¿ëÇØ¼­ ½ÇÇà½ÃÄÑ º¸µµ·Ï ÇÏÀÚ.(¿¹: -geometry 100x200+10+20)

2 Á¾·á¹öưÀÇ ÀÛ¼º

¾ÕÀå¿¡¼­ ¿ì¸®´Â ¹öư À§Á¬¸¸À¸·Î ±¸¼ºµÈ ¾ÆÁÖ °£´ÜÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇß´Ù. À̹ø¿¡´Â ¹öư¿¡ ¾×¼ÇÀ» Ãß°¡Çؼ­ ¹öưÀ» Ŭ¸¯ÇÒ°æ¿ì Á¾·á(quit)ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇØ º¸µµ·Ï ÇϰڴÙ. ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇϸ鼭 ¿ì¸®´Â QT¿¡¼­ Á¦°øÇÏ´Â ½Ã±×³Î ½½·Ô °³³ä¿¡ ´ëÇØ¼­ ¹è¿ì°Ô µÈ´Ù.

#include <qapplication.h> 
#include <qpushbutton.h> 
#include <string.h> 
 
#define print8(str) QString::fromLocal8Bit(str) 
 
int main(int argc, char **argv) 
{ 
    QApplication a (argc, argv); 
 
    QPushButton quit(print8("Á¾·á"), 0);  
    quit.resize(130, 60); 
    quit.setFont(QFont("baekmuk headline", 20, QFont::Bold)); 
 
    QObject::connect(&quit, SIGNAL(clicked()), &a, SLOT(quit())); 
 
    a.setMainWidget(&quit); 
    quit.show(); 
    return a.exec(); 
} 
 

´ÙÀ½Àº ½ÇÇà °á°úÀÌ´Ù.

http://www.joinc.co.kr/albums/album01/ahj.gif

2.1 ÁÙ´ÜÀ§ ¼³¸í

#include <qfont.h> 
 
ÀÌ ÇÁ·Î±×·¥Àº QFont¸¦ ÀÌ¿ëÇØ¼­ Ãâ·ÂµÇ´Â ÆùÆ®ÀÇ ¸ð¾çÀ» Á¶Á¤ÇÑ´Ù. À̸¦ À§Çؼ­ qfont.h Çì´õÆÄÀÏÀ» Ãß°¡ÇØ¾ß ÇÑ´Ù. QTÀÇ ÆùÆ® Ãß»óÀº °æ¾ÇÀÇ ¼öÁØÀÎ X¿¡¼­ Á¦°øÇÏ´Â ÆùÆ®¿Í ´Ù¸¥ ¹æ¹ýÀ» »ç¿ëÇÑ´Ù. À̸¦ ÀÌ¿ëÇØ¼­ Á»´õ ¹Ì·ÁÇÑ ÆùÆ®ÀÇ Ãâ·ÂÀÌ °¡´ÉÇÏ´Ù.
QPushButton quit(print8("Á¾·á"), 0);  
 
À̹ø¿¡´Â "Á¾·á"¸Þ½ÃÁö¸¦ º¸³»´Â Ǫ½¬¹öư À§Á¬À» ¸¸µé¾ú´Ù. ÀÌ ¹öưÀº ÃÖ»óÀ§ ºÎ¸ð À§Á¬À¸·Î »ç¿ë µÉ °ÍÀ̹ǷΠ0À» »ç¿ëÇϰí ÀÖ´Ù.
quit.resize(130, 60); 
 
¹öưÀÇ Å©±â´Â ÆùÆ®ÀÇ Å©±â¿Í ±æÀÌ¿¡ ¸Âµµ·Ï 130X60À¸·Î ÁöÁ¤Çß´Ù.

quit.setFont(QFont("baekmuk headline", 20, QFont::Bold)); 
 
ÆùÆ®¸¦ ¹é¹¬¿¡¼­ Á¦°øÇÏ´Â baekmuk headline·Î ¼±ÅÃÇϰí Å©±â´Â 20À» °¡Áö´Â µÎ²¨¿î(Bold)ÆùÆ®·Î °áÁ¤Çß´Ù. QApplication::setFont()¸¦ »ç¿ëÇÏ¸é ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëµÇ´Â ±âº» ÆùÆ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

QObject::connect(&quit, SIGNAL(clicked()), &a, SLOT(quit())); 
 
connect()´Â QT¿¡¼­ Á¦°øÇÏ´Â °¡Àå ÁÖ¿äÇÑ ±â´ÉÁßÀÇ ÇϳªÀÌ´Ù. connect()´Â QObjectÀÇ static ÇÔ¼öÀÓÀ» ÁÖÀÇÇϱ⠹ٶõ´Ù. ¼ÒÄÏ ¶óÀ̺귯¸®¿¡¼­ Á¦°øÇÏ´Â connect()¿Í´Â ÀüÇô´Ù¸£´Ù.

ÀÌ ÄÚµå´Â µÎ°³ÀÇ QT °´Ã¤¸¦ ´Ü¹æÇâÀ¸·Î ¿¬°áÇÏ´Â ÀÏÀ» ÇÑ´Ù(°´Ã¼´Â QObject¿¡¼­ Á÷°£Á¢ÀûÀ¸·Î »ó¼ÓµÈ °ÍµéÀÌ´Ù.). ¸ðµç QT °´Ã¼µéÀº ¸Þ½ÃÁö¸¦ º¸³»±â À§ÇÑ ½Ã±×³Î°ú ¸Þ½ÃÁö¸¦ ¹Þ±â À§ÇÑ ½½·ÔÀ» °¡Áö°í ÀÖ´Ù. ¸ðµç À§Á¬Àº QT °´Ã¼°¡ µÈ´Ù.

¿©±â¿¡¼­ ¿ì¸®°¡ quit¹öư(À§Á¬)ÀÇ ÀÇ clicked()½Ã±×³ÎÀº quit()½½·Ô°ú ¿¬°áµÇ¾î ÀÖ´Ù. clicked()½Ã±×³ÎÀº ¹öưÀ» Ŭ¸¯ÇÒ ¶§ ¹ß»ýÇÑ´Ù. ±×·¯¹Ç·Î ¿ì¸®°¡ ¹öưÀ» Ŭ¸¯ÇÏ°Ô µÇ¸é ¸Þ½ÃÁö°¡ quit()½½·ÔÀ¸·Î Àü´ÞµÇ°í ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¾·áÇÏ°Ô µÈ´Ù.

2.2 ¿¬½À

À©µµÀÇ Å©±â¸¦ º¯°æÇ϶ó. ¹öưÀ» Ŭ¸¯ÇßÀ» ¶§ Á¾·áµÇ´Â ´ë½Å "¿ó½º!"¹®ÀÚ¿­À» Ãâ·ÂÇϵµ·Ï Äڵ带 ¼öÁ¤ÇØ º¸¶ó.

QPushButtonÀÇ ´Ù¸¥ ½Ã±×³ÎÀ» quit¿¡ ¿¬°áÇØº¸µµ·Ï ÇÏÀÚ. ÈùÆ® QPushButtonÀº QButtonÀ¸·Î ºÎÅÍ »ó¼ÓµÈ´Ù.

3 (À§Á¬ °ü°è)Family Values

Áö±Ý±îÁöÀÇ ¿¹Á¦´Â ´ÜÁö ÇϳªÀÇ À§Á¬¸¸ÀÌ »ç¿ëµÇ¾ú°í, ´ç¿¬È÷ ÀÌ À§Á¬ÀÌ ºÎ¸ð À§Á¬ÀÌ µÇ¾ú´Ù. À̹ø¿¡ ÀÛ¼ºÇÏ´Â ÇÁ·Î±×·¥Àº ºÎ¸ðÀ§Á¬°ú ÀÚ½ÄÀ§Á¬À» °¡Áö´Â Á»´õ ½ÇÁúÀûÀÎ GUI¾ÖÇø®ÄÉÀ̼ÇÀÇ ¸ð½ÀÀ» º¸¿©ÁØ´Ù.
#include <qpushbutton.h> 
#include <qfont.h> 
#include <qvbox.h> 
 
#define print8(str) QString::fromLocal8Bit(str) 
 
int main(int argc, char **argv) 
{ 
    QApplication a(argc, argv); 
 
    QVBox box; 
    box.resize(200, 120); 
 
    QPushButton quit(print8("Á¾·á"), &box); 
    quit.setFont(QFont("baekmuk gulim", 18, QFont::Bold)); 
 
    QObject::connect(&quit, SIGNAL(clicked()), &a, SLOT(quit())); 
 
    a.setMainWidget(&box); 
    box.show(); 
 
    return a.exec(); 
} 
 

3.1 ÁÙ´ÜÀ§ ºÐ¼®

http://www.joinc.co.kr/albums/album01/ahl.gif

#include <qvbox.h> 
 
ÀÌ ÄÚµå´Â ÀÚ½ÄÀ§Á¬À» ¹èÄ¡Çϱâ À§Çؼ­ ·¹À̾ƿô(layout) Ŭ·¡½º¸¦ »ç¿ëÇÑ´Ù. À̸¦ À§Çؼ­ qbox.h¸¦ ÀÎŬ·çµå ½ÃÄ×´Ù.
QVBox box; 
 
ÀÌ Å¬·¡½º´Â ¼öÁ÷À¸·Î À§Á¬À» ¹è¿­ÇÒ¼ö ÀÖ´Â °£´ÜÇÑ ÄÁÅ×À̳ʸ¦ »ý¼ºÇÑ´Ù. QVBox´Â ÀÚ½ÄÀ§Á¬À» ÀÚµ¿ÀûÀ¸·Î ¼öÁ÷ Á¤¿­ÇÑ´Ù. À§Á¬ÀÇ Å©±â´Â ÀÚ½ÄÀ§Á¬ÀÇ Å©±â(QWidget::sizePolicy())Á¤Ã¥¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ´Ù.
box.resize(200, 120); 
 
°¡·Î 200, ¼¼·Î 120 Çȼ¿ÀÇ Å©±â¸¦ °¡Áö´Â QVBox ÄÁÅ×À̳ʸ¦ »ý¼ºÇÑ´Ù.

QPushButton quit("Á¾·á", &box); 
 
ÀÌÁ¦ ÀÚ½Ä À§Á¬ÀÌ ¸¸µé¾î Á³´Ù.

QPushButtonÀº "Á¾·á"¹®ÀÚ¿­À» °¡Áö¸ç, box¸¦ ºÎ¸ðÀ§Á¬À¸·Î ÇØ¼­ »ý¼ºµÈ´Ù. ÀÚ½Ä À§Á¬Àº ¾ðÁ¦³ª ºÎ¸ð À§Á¬ À§¿¡ ³õÀÌ°Ô µÈ´Ù.

ºÎ¸ð À§Á¬ÀÎ QVBox´Â ÀÚ½ÅÀÇ À§¿¡ ³õÀÌ´Â À§Á¬À» ÀÚµ¿ÀûÀ¸·Î (¼¼·Î¹æÇâÀ¸·Î)Áß¾Ó¿¡ ³õÀ̵µ·Ï ÇÑ´Ù

box.show(); 
 
ºÎ¸ðÀ§Á¬ÀÌ º¸À̰Եɶ§, show()¸¦ È£ÃâÇØ¾ßÁö ÀÚ½ÅÀÇ ÀÚ½Ä À§Á¬µéÀÌ º¸¿©Áö°Ô µÈ´Ù.

ÀÌÁ¦ ¹öưÀº ´õÀÌ»ó À§Á¬ Àüü¸¦ ä¿ìÁö ¾È°Ô µÈ´Ù. ¹öưÀº ºÎ¸ðÀ§Á¬ À§¿¡¼­ ³ô¿©¼­ ÀÏÁ¤ÇÑ Å©±â¸¦ À¯ÁöÇÏ°Ô µÈ´Ù. »ç¿ëµÇ´Â ¹öưÀÇ Å©±â¿Í À§Ä¡ÀÇ ´ëÇÑ Á¤Ã¥Àº QWidget::sizeHint()¿Í QWidget::setSizePolicy()ÀÇ ÇÔ¼ö¸¦ ÅëÇØ¼­ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.

3.2 ¿¬½À

À©µµ¿ìÀÇ Å©±â¸¦ º¯°æÇØ º¸ÀÚ. ¹öưÀÇ Å©±â°¡ ¾î¶»°Ô º¯°æµÇ´ÂÁö.. ¹öưÀÇ À§Ä¡°¡ ¾î¶»°Ô º¯°æµÇ´ÂÁö.. ±×¸®°í ÆùÆ®ÀÇ Å©±â°¡ º¯ÇÒ°æ¿ì ¹öưÀÌ ¾î¶»°Ô º¯ÇÏ´ÂÁö µî¿¡ ´ëÇØ¼­ Å×½ºÆ® ÇØº¸µµ·Ï ÇÏÀÚ.

4 À§Á¬ °¡Áö°í ³î±â

À̹ø ¿¹Á¦´Â »ç¿ëÀÚ À§Á¬À» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¾Ë·ÁÁÙ °ÍÀÌ´Ù. ¾î¶»°Ô À§Á¬ÀÇ ÃÖ´ë/ÃÖ¼Ò Å©±â¸¦ º¯°æÇÒ ¼ö ÀÖ´ÂÁöµî¿¡ ´ëÇØ¼­ ¾Ë¾Æ º¼ °ÍÀÌ´Ù.

#include <qapplication.h> 
#include <qpushbutton.h> 
#include <qfont.h> 
 
#define print8(str) QString::fromLocal8Bit(str) 
 
class MyWidget : public QWidget 
{ 
    public: 
        MyWidget(QWidget *parent=0, const char *name = 0); 
}; 
 
MyWidget::MyWidget(QWidget *parent, const char *name) 
        : QWidget(parent, name) 
{ 
    setMinimumSize(200, 120); 
    setMaximumSize(200, 120); 
 
    QPushButton *quit = new QPushButton(print8("Á¾·á"), this, "quit"); 
    quit->setFont(QFont("baekmuk gulim", 18, QFont::Bold)); 
    quit->setGeometry(62,60,75,30); 
 
    connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()) ); 
} 
 
int main(int argc, char **argv) 
{ 
    QApplication a (argc, argv); 
 
    MyWidget w; 
    w.setGeometry(100,100,200,120); 
    a.setMainWidget(&w); 
    w.show(); 
    return a.exec(); 
} 
 

http://www.joinc.co.kr/albums/album01/ahm.gif

4.1 ÁÙ´ÜÀ§ ¼³¸í

class MyWidget : public QWidget  
{ 
    public: 
        MyWidget(QWidget *parent=0, const char *name=0); 
} 
 
¿ì¸®´Â MyWidget¶ó´Â »õ·Î¿î Ŭ·¡½º¸¦ »ý¼ºÇß´Ù. ÀÌ Å¬·¡½º´Â QWidget·Î ºÎÅÍ »ó¼ÓµÈ Ŭ·¡½º À̹ǷΠÃÖ»óÀ§ ·¹º§À©µµ¿ì¿Í ÀÚ½Ä À§Á¬¸ðµÎ·Î »ç¿ëµÉ ¼ö ÀÖ´Ù.

ÀÌ Å¬·¡½º´Â ´ÜÁö ÇϳªÀÇ ¸É¹öÀÎ »ý¼ºÀÚ¸¸À» °¡Áö°í ÀÖ´Ù(ÀÌ ¹ì¹ö´Â QWidget·Î ºÎÅÍ»ó¼ÓµÈ ¸â¹ö¿¡ ´õÇØÁö°Ô µÈ´Ù.). »ý¼ºÀڴ ǥÁØ QTÀ§Á¬ »ý¼ºÀÚÀÌ´Ù. ¿©·¯ºÐÀÌ »ç¿ëÀÚ Á¤ÀÇ À§Á¬À» ¸¸µé°íÀÚ ÇÒ¶§ »ý¼ºÀÚ´Â À§¿Í ºñ½ÁÇÑ ¸ð½ÀÀ» °¡Áö°Ô µÈ´Ù.

ù¹øÂ° ÀÎÀÚ´Â ºÎ¸ðÀ§Á¬À» ÁöÁ¤Çϱâ À§Çؼ­ »ç¿ëÇϴµ¥, ºÎ¸ðÀ§Á¬À¸·Î »ç¿ëµÉ ¼ö ÀÖÀ¸¹Ç·Î NULLÀÌ »ç¿ëµÇ¾îÁö°í ÀÖ´Ù. ÀÌ À§Á¬Àº ±âº»ÀûÀ¸·Î Ãë»óÀ§ À©µµ¿ìÀÇ À§Á¬À¸·Î »ý¼ºµÈ´Ù.

µÎ¹øÂ° ÀÎÀÚ´Â À§Á¬ÀÇ À̸§ÀÌ´Ù. À̰ÍÀº À©µµ¿ì³ª ¹öư¿¡ ³ª¿À´Â ¹®ÀÚµéÀÌ ¾Æ´Ï´Ù. ÀÌ À̸§Àº ³ªÁß¿¡ ¿©·¯°³ÀÇ À§Á¬ÀÌ »ç¿ëµÉ °æ¿ì À̵éÀ» ½±°Ô ±¸ºÐÇØ¼­ ºÐ¸®Çϱâ À§Çؼ­ ȤÀº µð¹ö±ëÀ» À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëµÈ´Ù.

{ 
    setMinimumSize(200, 120); 
    setMaximumSize(200, 120); 
 
ÀÌ À§Á¬Àº Å©±â¸¦ º¯°æÇÒ ¼ö ¾øµµ·Ï ¸¸µé°ÍÀÌ´Ù. ±×·¯¹Ç·Î À§Á¬ÀÇ ÃÖ´ëÅ©±â¿Í ÃÖ¼ÒÅ©±â¸¦ µ¿ÀÏÇÏ°Ô ÇÏ´Â ¹æ¹ýÀ¸·Î º¯°æ ºÒ°¡´ÉÇÏ°Ô ¸¸µé¾ú´Ù. ´ÙÀ½ Àå¿¡¼­ ¿ì¸®´Â À¯Àú·Î ºÎÅÍ À§Á¬ÀÇ Å©±â º¯°æµî¿¡ ´ëÇÑ ¿äûÀ» ¹Þ¾ÒÀ» ¶§ ¾î¶»°Ô ¹ÝÀÀÇÒÁö¿¡ ´ëÇØ¼­ ¾Ë¾Æ º¼ °ÍÀÌ´Ù.

    QPushButton *quit = new QPushButton(print8("Á¾·á"), this, "quit"); 
    quit->setFont(QFont("baekmuk gulim", 18, QFont::Bold)); 
    quit->setGeometry(62,60,75,30); 
 
¿ì¸®´Â ¿©±â¿¡¼­ "quit"¶ó´Â À̸§À» °¡Áö´Â ÀÚ½Ä ¹öư À§Á¬À» »ý¼ºÇß´Ù. ÀÌ ¹öưÀº "Á¾·á"¶ó°í Ç¥½ÃµÇ¸ç, »ç¿ëµÇ´Â ÆùÆ®·Î gulimÀ» ¼³Á¤Çß´Ù.

    connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()) ); 
 
MyWidgetŬ·¡½º´Â ¾ÖÇø®ÄÉÀ̼ÇÀÇ °´Ã¼¸¦ ¾Ë ¼ö ¾øÀ¸¹Ç·Î ¿¬°áµÉ °´Ã¼°¡ qAppÀÓÀ» ¸í½ÃÇϰí ÀÖ´Ù.

int main(int argc, char **argv) 
{ 
    QApplication a (argc, argv); 
 
    MyWidget w; 
    w.setGeometry(100,100,200,120); 
    a.setMainWidget(&w); 
    w.show(); 
    return a.exec(); 
} 
 
¿©±â¿¡¼­ ¿ì¸®°¡ ¸¸µç À§Á¬À» ¸ÞÀÎÀ§Á¬À¸·Î ÇØ¼­ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇà½ÃÄ×´Ù.

ÀÌ ÇÁ·Î±×·¥Àº ¾Õ¼­¸¸µé¾î º¸¾Ò´ø ÇÁ·Î±×·¥°ú ºñ½ÁÇÏ´Ù. ´Ù¸¥ Á¡ÀÌ ÀÖ´Ù¸é À§Á¬À» »ý¼ºÇϱâ À§ÇÑ ¸î°¡Áö ºÎºÐµéÀÏ °ÍÀÌ´Ù.

4.2 ¿¬½À

  1. main()¿¡¼­ MyWidget¸¦ Çϳª´õ »ý¼ºÇØ º¸ÀÚ. ¾î¶²ÀÏÀÌ ¾Ë¾î³ª´Â°¡ ?
  2. QPushButtonÀ̿ܿ¡ ´Ù¸¥ À§Á¬À» Ãß°¡Çغ¸ÀÚ.

5 ºí·°ÀÇ »ý¼º


À̹ø ¿¹Á¦´Â ¿©·¯°³ÀÇ À§Á¬À» »ý¼ºÇϰí, °¢ À§Á¬¿¡¼­ÀÇ ½Ã±×³Î°ú ½½·ÔÀ» ¾î¶»°Ô Á¦¾îÇÏ´ÂÁö¿Í À©µµ¿ìÁîÀÇ Å©±âº¯°æ À̺¥Æ®¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù.

#include <qapplication.h> 
#include <qpushbutton.h> 
#include <qslider.h> 
#include <qlcdnumber.h> 
#include <qfont.h> 
#include <qvbox.h> 
 
#define LocalKor(str) QString::fromLocal8Bit(str) 
 
class MyWidget : public QVBox 
{ 
    public : 
        MyWidget(QWidget *parent=0, const char *name=0); 
}; 
 
MyWidget::MyWidget(QWidget *parent, const char *name) 
        : QVBox(parent, name) 
{ 
    QPushButton *quit = new QPushButton(LocalKor("Á¾·á"), this, "quit"); 
    quit->setFont(QFont("baekmuk headline", 18, QFont::Bold)); 
 
    connect(quit, SIGNAL(clicked()), qApp, SLOT(quit())); 
 
    QLCDNumber *lcd = new QLCDNumber(2, this, "lcd"); 
 
    QSlider *slider = new QSlider(Horizontal, this, "slider"); 
    slider->setRange(0,99); 
    slider->setValue(0); 
 
    connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int))); 
} 
 
int main(int argc, char **argv) 
{ 
    QApplication a(argc, argv); 
 
    MyWidget w; 
    a.setMainWidget(&w); 
    w.show(); 
    return a.exec(); 
} 
 

5.1 ÁÙ´ÜÀ§ ºÐ¼®

#include <qapplication.h> 
#include <qpushbutton.h> 
#include <qslider.h> 
#include <qlcdnumber.h> 
#include <qfont.h> 
#include <qvbox.h> 
 
qslider.h, qlcdnumber.h ÀÇ »õ·Î¿î Çì´õÆÄÀÏÀÌ ÀÎŬ·çµå µÇ¾ú´Ù. À̵é Çì´õÆÄÀÏÀº QSlider¿Í QLCDNumberÀ§Á¬À» »ç¿ëÇϱâ À§Çؼ­ ÇÊ¿äÇÏ´Ù. qvbox.h ´Â QT¿¡¼­ ÀÚµ¿ÀûÀÎ ·¹À̾ƿôÀÇ Áö¿øÀ» À§Çؼ­ »ç¿ëÇÑ´Ù.

class MyWidget : public QVBox 
{ 
    public : 
        MyWidget(QWidget *parent=0, const char *name=0); 
}; 
 
MyWidget::MyWidget(QWidget *parent, const char *name) 
        : QVBox(parent, name) 
{ 
 
 
MyWidet´Â QWidget°¡ ¾Æ´Ñ QVBox·Î ºÎÅÍ »ó¼ÓµÇ¾ú´Ù. QVBox´Â Æ÷ÇÔÇϰí ÀÖ´Â ÀÚ½ÄÀ§Á¬À» ÀÚµ¿ÀûÀ¸·Î (¼öÁ÷¹æÇâÀ¸·Î) ·¹À̾ƿôÀ» Àâ¾ÆÁØ´Ù. ¶ÇÇÑ À§Á¬ÀÇ Å©±âº¯°æ°ú °°Àº À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§µµ ÀÚ½Ä ÀÚ½ÅÀÇ À§Á¬Å©±â¿¡ ¸Âµµ·Ï À§Á¬ÀÇ Å©±â¸¦ ¾Ë¾Æ¼­ º¯°æ½ÃÄÑÁØ´Ù.
QLCDNumber *lcd = new QLCDNumber(2, this, "lcd"); 
 
QLCDNumber´Â LCD¿Í °°Àº ¸ð¾çÀÇ ¼ýÀÚÇ¥½Ã¸¦ Áö¿øÇÏ´Â À§Á¬ÀÌ´Ù. lcd´Â 2°³ÀÇ ¼ýÀÚÆÇÀ» °¡Áö°í »ý¼ºµÇµµ·Ï ¸¸µé¾ú´Ù. À̸§Àº lcd·Î Çß´Ù. ÀÌ À̸§Àº ³ªÁß¿¡ À§Á¬À» °¡¸®Å°±â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëµÈ´Ù.

QSlider *slider = new QSlider(Horizontal, this, "slider"); 
slider->setRange(0,99); 
slider->setValue(0); 
 
QSlider´Â ½½¶óÀÌ´õ¹Ù¸¦ ±¸ÇöÇϱâ À§ÇØ »ç¿ëµÇ´Â Ŭ·¡½º´Ù. ÀÌ À§Á¬Àº ½½¶óÀÌ´õ ¹öưÀ» µå·¡±×ÇÏ¸é ¼³Á¤µÈ ¹üÀ§(ÃÖ´ë,ÃÖ¼Ò) ³»¿¡¼­ Á¤¼ö°ªÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ¿©±â¿¡¼­´Â ¼öÆò¹æÇâÀ¸·Î 0¿¡¼­ 99±îÁöÀÇ ¹üÀ§¸¦ °¡Áö¸ç Ãʱ⠰ªÀº 0ÀÎ ½½¶óÀÌ´õ À§Á¬À» »ý¼ºÇß´Ù. ¹üÀ§´Â QSlider::setRange()¸¦, ÃʱâÈ­´Â QSlider::setRange()¸¦ ÀÌ¿ëÇß´Ù. ÀÌ À§Á¬ÀÇ À̸§Àº slider·Î Çß´Ù.

connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) ); 
 
¿ì¸®°¡ ¸¸µé°íÀÚ ÇÏ´Â ÇÁ·Î±×·¥Àº ½½¶óÀÌ´õ¹ÙÀÇ ¹öưÀ» µå·¡±×ÇØ¼­ °ªÀÌ º¯°æµÇ¸é LCD¿¡ Ãâ·Â½ÃŰ´Â ÀÏÀ» ÇÑ´Ù. ±×·¸´Ù¸é ½½¶óÀÌ´õÀÇ º¯°æ°ªÀÌ LCD¿¡ Àü´ÞµÇ¾î¾ß ÇҰǵ¥, ½Ã±×³Î/½½·Ï À» ÀÌ¿ëÇØ¼­ ÀÌ·ê ±¸ÇöÇß´Ù. slider¿¡¼­ °ªÀÇ º¯°æ(valueChange)°¡ ¹ß»ýÇϸé, º¯°æµÈ Á¤º¸¸¦ lcdÀ§Á¬ÀÇ display¿¡ Àü´ÞÇ϶ó´Â ¶æÀÌ´Ù.

ÀÌ»óÀÇ ³»¿ëÀ» º¸¸é ½½·ÔÀº ´ë·« C++¸â¹ö ÇÔ¼ö¸¦ ¿¢¼¼½ºÇÒ ¼ö ÀÖ´Â ÀϹÝÀûÀÎ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇϰí ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù.

5.2 ÀÛµ¿ Å×½ºÆ®

½½¶óÀÌ´õ¹Ù¸¦ ¿òÁ÷ÀÌ¸é ±× °©¿¡ ¸Âµµ·Ï LCD ¹øÈ£°¡ Ãâ·ÂµÇ´Â°É È®ÀÎ ÇÒ ¼ö ÀÖ´Ù. ±×¸®°í À§Á¬(À©µµ¿ì)ÀÇ Å©±â¸¦ º¯°æÇÏ¸é °Å±â¿¡ ¸ÂÃ߾ LCD¿Í ½½¶óÀÌ´õ À§Á¬ÀÇ Å©±âµµ º¯°æµÊÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

5.3 ¿¬½À

  1. ½½¶óÀÌ´õÀÇ ¹üÀ§¸¦ º¯°æ½ÃÄÑ º¸ÀÚ.
  2. LCD ¹øÈ£°¡ ÁöÁ¤µÈ ¹üÀ§¸¦ ÃʰúµÇ¾î ¹ö¸±°æ¿ì Á¾·áÇϵµ·Ï Äڵ带 ¼öÁ¤ÇØ º¸ÀÚ.

6 ¸¹Àº ºí·°ÀÇ Á¦ÀÛ°ú ¹è¿­


À̹ø ¿¹Á¦´Â µÎ°³ÀÇ À§Á¬À» ÄÄÆ÷³ÍƮȭ ½ÃŰ´Â ¹æ¹ý°ú, ¸¹Àº ¼öÀÇ À§Á¬À» ¾î¶»°Ô ´Ù·ê¼ö ÀÖ´ÂÁö¸¦ º¸¿©ÁØ´Ù. À̸¦ À§Çؼ­ ¿ì¸®´Â ÀÚ½Ä À§Á¬À¸·Î »ç¿ëÀÚ Á¤ÀÇ À§Á¬À» ÀÌ¿ëÇÒ °ÍÀÌ´Ù.
#include <qapplication.h> 
#include <qpushbutton.h> 
#include <qslider.h> 
#include <qlcdnumber.h> 
#include <qfont.h> 
#include <qvbox.h> 
#include <qgrid.h> 
 
class LCDRange : public QVBox 
{ 
    public: 
        LCDRange(QWidget *parent=0, const char *name=0); 
}; 
 
LCDRange::LCDRange(QWidget *parent, const char *name) 
    : QVBox(parent, name) 
{ 
    QLCDNumber *lcd = new QLCDNumber(2, this, "lcd"); 
    QSlider *slider = new QSlider(Horizontal, this, "slider"); 
    slider->setRange(0, 99); 
    slider->setValue(0); 
    connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int))); 
} 
 
class MyWidget:public QVBox 
{ 
    public : 
        MyWidget(QWidget *parent = 0, const char *name=0); 
}; 
 
MyWidget::MyWidget(QWidget *parent, const char *name) 
        :QVBox(parent, name) 
{ 
    QPushButton *quit = new QPushButton("Quit", this, "quit"); 
    quit->setFont(QFont("Times", 18, QFont::Bold)); 
    connect(quit, SIGNAL(clicked()), qApp, SLOT(quit())); 
 
    QGrid *grid = new QGrid(4, this); 
    for (int i = 0; i < 4; i++) 
    { 
        for (int j = 0; j < 4; j++) 
            new LCDRange(grid); 
    } 
} 
 
int main(int argc, char **argv) 
{ 
    QApplication a(argc, argv); 
 
    MyWidget w; 
    a.setMainWidget(&w); 
    w.show(); 
    return a.exec(); 
} 
 

6.1 ÁÙ´ÜÀ§ ¼³¸í

class MyWidget:public QVBox 
{ 
    public : 
        MyWidget(QWidget *parent = 0, const char *name=0); 
}; 
 

Cache Error
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.