2.1 ¶Ô»°¿ò
2.1.1 ¶Ô»°¿òµÄ½éÉÜ
ÔÚ֮ǰ´´½¨widget¹¤³ÌµÄʱºò£¬ÐèҪѡÔñ»ùÀ࣬ÓÐÈý¸öÑ¡Ï·Ö±ðÊÇ£º
QWidget : ²¿¼þÀ࣬ĬÈÏÑ¡ÔñʹÓøÃÑ¡Ï¿ÉÒÔ×÷Ϊ×Ó²¿¼þ£¬·ÅÔÚ±ðÈËÌåÄÚÏÔʾ£¬Ã»ÓбêÌâÀ¸£¬Èç¹ûµ¥¶À´æÔÚ¾ÍÓбêÌâÀ¸
QMainWindow : ÓÃÀ´×öÖ÷´°ÌåÀà
QDialog : ÓÃÀ´×ö¶Ô»°¿ò£¬³ÌÐòºÍÓû§½øÐжԻ°£¬À´»ñÈ¡Óû§µÄÑ¡Ôñ£¬»òÕßÊäÈë»òÕßÆäËûµÄÐÅÏ¢»òÕßÓÃÀ´ÌáʾÓû§£¬¸úÓû§½øÐн»»¥Óõģ¬Õâ¾ÍÊǶԻ°¿ò£¬ÀýÈçÏÂÃæµÄÁ½¸ö¶Ô»°¿ò£¬ÓÃÀ´×ö½»»¥µÄ£¬²»Êdz£ÏÔʾµÄ
˵Ã÷£º¶Ô»°¿òºÍÖ÷´°Ìå³ÌÐò²»ÄÜ×÷Ϊ×Ó²¿¼þ£¬±ØÐëµ¥¶À´æÔÚ£¬¶ÀÁ¢ÏÔʾ
2.1.2 ¶Ô»°¿òµÄ·ÖÀà
QtÌṩÁËһЩ³£ÓõĶԻ°¿òÀàÐÍ£¬È«²¿¼Ì³Ð×ÔQDialogÀ࣬²¢Ôö¼ÓÁË×Ô¼ºµÄÌØÉ«¹¦ÄÜ£¬±ÈÈç»ñÈ¡ÑÕÉ«ÏÔʾÌض¨ÐÅÏ¢µÈ¡£¶Ô»°¿òÒ²¿ÉÒÔ½øÐÐÒÔϵķÖÀà¡£
¸ù¾ÝÊÇ·ñ×èÈûÆäËû½çÃ棬½«¶Ô»°¿ò·ÖÁ½À࣬½Ð×öģ̬¶Ô»°¿òºÍ·Çģ̬¶Ô»°¿ò
1£©Èç¹ûÊÇ×èÈûµÄ£¬½Ð×öģ̬¶Ô»°¿ò£¬Èç¹û¶Ô»°¿ò²»²»¹Øµô£¬ÔòÎÞ·¨²Ù×÷ÆäËûµÄ½çÃæ
2£©Èç¹ûÊÇ·Ç×èÈûµÄ£¬½Ð×ö·Çģ̬¶Ô»°¿ò£¬Èç¹û¶Ô»°¿ò´ò¿ªÖ®ºó£¬ÒÀÈ»¿ÉÒÔ²Ù×÷ÆäËû½çÃ棬ÕâÖÖ¶Ô»°¿òÓÐÒ»¸öºÜÃ÷ÏÔµÄÌصã¾ÍÊÇËüÊǶÀÁ¢´æÔÚ£¬¶øÇÒÖ÷´°ÌåÒ²ÊǶÀÁ¢´æÔڵģ¬
¸ù¾ÝÊÇ·ñ×Ô¶¨Òå
1£©±ê×¼¶Ô»°¿ò£º¸ù¾Ý¶Ô»°¿òµÄÓÃ;¿ÉÒÔ½«¶Ô»°¿ò·ÖΪÎļþ¶Ô»°¿ò£¬ÑÕÉ«¶Ô»°¿ò£¬×ÖÌå¶Ô»°¿ò£¬ÏûÏ¢¶Ô»°¿ò£¬´íÎóÐÅÏ¢¶Ô»°¿ò£¬Ïòµ¼¶Ô»°¿ò£¬½ø¶È¶Ô»°¿ò£¬ÊäÈë¶Ô»°¿ò£¬³£ÓõĶԻ°¿òÓÐÎļþ¶Ô»°¿ò£¬ÑÕÉ«¶Ô»°¿ò£¬×ÖÌå¶Ô»°¿ò¡£
2£©×Ô¶¨Òå¶Ô»°¿ò£ºÊ¾Àý,µÇ¼¶Ô»°¿ò
2.1.3 ģ̬¶Ô»°¿ò
QDialogÀàÊÇËùÓжԻ°¿ò´°¿ÚÀàµÄ»ùÀà¡£¶Ô»°¿ò´°¿ÚÊÇÒ»¸ö¾³£ÓÃÀ´Íê³ÉÒ»¸ö¶ÌСÈÎÎñ»òÕߺÍÓû§½øÐмòµ¥½»»¥µÄ¶¥²ã´°¿Ú¡£°´ÕÕÔËÐжԻ°¿òʱÊÇ·ñ»¹¿ÉÒԺ͸óÌÐòµÄÆäËû´°¿Ú½øÐн»»¥£¬¶Ô»°¿ò³£±»·ÖΪÁ½À࣬ģ̬£¨modal£©ºÍ·Çģ̬£¨modeless£©¡£
ģ̬¶Ô»°¿ò¾ÍÊÇûÓйرÕËü֮ǰ£¬²»ÄÜÔÙÓëͬһ¸öÓ¦ÓóÌÐòµÄÆäËû´°¿Ú½øÐн»»¥£¬±ÈÈçн¨ÏîĿʱµ¯³öµÄ¶Ô»°¿ò¡£¶ø¶ÔÓÚ·Çģ̬¶Ô»°¿ò£¬¼È¿ÉÒÔÓëËü½»»¥£¬Ò²¿ÉÒÔÓëͬһ³ÌÐòÖеÄÆäËû´°¿Ú£¬ÀýÈçMicrosoft WordÖеIJéÕÒÌæ»»¶Ô»°¿ò
ģ̬¶Ô»°¿ò·ÖΪÈýÖÖ£ºÈ«Ä£Ì¬¡¢·Çģ̬¡¢°ëģʽ¶Ô»°¿ò¡£
ÒªÏëʹһ¸ö¶Ô»°¿ò³ÉΪģ̬¶Ô»°¿ò£¬Ö»ÐèÒªµ÷ÓÃËüµÄexec()º¯Êý£¬¶øҪʹÆä³ÉΪ·Çģ̬¶Ô»°¿ò£¬¿ÉÒÔʹÓÃnew²Ù×÷À´´´½¨£¬È»ºóʹÓÃshow()º¯ÊýÀ´ÏÔʾ¡£ÆäʵʹÓÃshow()º¯ÊýÒ²¿ÉÒÔ½¨Á¢Ä£Ì¬¶Ô»°¿ò£¬Ö»ÐèÒªÔÚÆäÇ°ÃæʹÓÃsetModal()º¯Êý¼´¿É¡£
1£©³ÌÐòµÚÒ»¸öʾÀý´úÂë
#include <QApplication> #include <mainwidget.h> #include <logindialog.h> #include <QDebug> int main(int argc,char *argv[]) { QApplication a(argc,argv);
MainWidget w; //´´½¨Ò»¸öÖ÷½çÃæ w.setWindowTitle("Ö÷½çÃæ1"); //ÉèÖñêÌâ w.show();
LoginDialog d; //±íʾÁ½¸ö´°¿Ú¶ÀÁ¢´æÔÚ d.exec(); //½øÈëʼþÑ»·£¬Ö»Óе±¶Ô»°¿ò±»¹Ø±Õʱº¯Êý²Å»á½áÊø
//ÕâÑù¾Í˵Ã÷£¬Ö»Óе±execº¯Êý·µ»Ø£¬ÏÂÃæµÄÓï¾ä²Å»áÖ´ÐÐ //Ö»Óе±¶Ô»°¿ò¹Ø±Õʱ£¬ÏÂÃæµÄÓï¾ä²Å»áÖ´ÐÐ w.setWindowTitle("Ö÷½çÃæ2"); //ÉèÖñêÌâ qDebug()<<"×èÈûÁËÖ÷½çÃ棬²ÅÖ´ÐÐ...."; return a.exec(); //ʼþÑ»·
}
|
ÉÏÊö³ÌÐò»á³öÏÖÁ½¸ö½çÃ棬²¢ÇÒÕâÁ½¸ö½çÃæ±Ë´ËÊǶÀÁ¢µÄ£¬µ«ÊÇ£¬Ö÷½çÃæÊÇÎÞ·¨²Ù×÷µÄ£¬Ö»Óе±¶Ô»°¿ò±»¹Ø±Õ£¬ÕâÑùexecº¯Êý²Å»á½áÊø£¬ÕâÑùexecÏÂÃæµÄ³ÌÐò²Å»áÖ´ÐУ¬´Ëʱ¾Í¿ÉÒÔ²Ù×÷Ö÷½çÃæ
³ÌÐòÔËÐнá¹ûÈçÏ£º
2£©µÚ¶þ¸ö³ÌÐòʾÀý´úÂë
#include <QApplication> #include <mainwidget.h> #include <logindialog.h> #include <QDebug> int main(int argc,char *argv[]) { QApplication a(argc,argv);
MainWidget w; //´´½¨Ò»¸öÖ÷½çÃæ w.setWindowTitle("Ö÷½çÃæ1"); //ÉèÖñêÌâ w.show();
LoginDialog d; //±íʾÁ½¸ö´°¿Ú¶ÀÁ¢´æÔÚ
d.show(); return a.exec(); //ʼþÑ»· } |
ÉÏÊö³ÌÐò±íʾÁ½¸ö´°¿Ú¶ÀÁ¢´æÔÚ£¬²¢ÇÒÁ½¸ö´°¿Ú»¥Ï಻ӰÏ죬²Ù×÷ÄÄÒ»¸ö¶¼¿ÉÒÔ£¬ÕâÖÖ£¬Ò²¾ÍÊǶԻ°¿ò²»×èÈûÖ÷½çÃ棬ÕâÖÖģʽ¾ÍÊÇ·Çģ̬µÄ¡£
3£©µÚÈý¸ö³ÌÐòʾÀý´úÂë
#include <QApplication> #include <mainwidget.h> #include <logindialog.h> #include <QDebug> int main(int argc,char *argv[]) { QApplication a(argc,argv);
MainWidget w; //´´½¨Ò»¸öÖ÷½çÃæ w.setWindowTitle("Ö÷½çÃæ1"); //ÉèÖñêÌâ w.show();
LoginDialog d; //±íʾÁ½¸ö´°¿Ú¶ÀÁ¢´æÔÚ d.setModal(true); //ÉèÖöԻ°¿òģ̬µÄÊôÐÔÊÇģ̬µÄ //ĬÈÏÊÇ·Çģ̬µÄ // d.setModal(false); //±íʾÉèÖÃΪ·Çģ̬´Ëʱ¾Í²»»á×èÈûÖ÷½çÃæ d.show(); //´Ëʱ¾Í˵Ã÷¶Ô»°¿ò»á×èÈûÖ÷½çÃ棬ֻÓйصô¶Ô»°¿ò£¬Ö÷½çÃæ²Å¿ÉÒÔ²Ù×÷ //µ«ÊÇsetModalº¯ÊýºÍshowº¯Êý¶¼²»»á×èÈû£¬ËùÒÔÏÂÃæµÄ³ÌÐò´úÂ뻹ÊÇ»áÖ´ÐÐ //Ö»ÊǽçÃæÎÞ·¨²Ù×÷ w.setWindowTitle("Ö÷½çÃæ2"); //ÉèÖñêÌâ qDebug()<<"Á¢¼´Ö´ÐÐ...."; return a.exec(); //ʼþÑ»· } |
ÉÏÊö³ÌÐò´úÂë½ö½öÖ»¶ÔÖ÷½çÃæ×èÈû£¬µ«ÊDz¢²»»á×èÈû³ÌÐò´úÂëµÄÔËÐУ¬ËùÒÔsetModalº¯ÊýÏÂÃæµÄ³ÌÐò´úÂëÒÀÈ»»áÖ´ÐС£
˵Ã÷£º
µ÷ÓÃexec()º¯Êý£¬²»½ö»á×èÈû½çÃ棬ÆäexecÏÂÃæµÄ³ÌÐò´úÂëÒ²»á±»×èÈû£¬ÎÞ·¨Ö´ÐУ¬Ö»Óе±ËüµÄ¶Ô»°¿ò±»¹Ø±Õʱ²Å»á·µ»Ø£¬execº¯Êý²Å»á½áÊø£¬Ö÷½çÃæ²»»á×èÈû£¬³ÌÐò´úÂëÒ²¿ÉÒÔÖ´ÐУ¬setModal()ÉèÖÃģ̬ÊôÐÔº¯Êý£¬½ö½öÖ»ÊÇ×èÈû½çÃæÎÞ·¨²Ù×÷£¬µ«ÊÇsetModal()º¯ÊýÏÂÃæµÄ³ÌÐò´úÂëÒÀÈ»»áÖ´ÐУ¬Ö»Óе±¶Ô»°¿ò±»¹Ø±Õʱ£¬Ö÷½çÃæ²Å¿ÉÒÔ²Ù×÷
accept()º¯ÊýÊÇQDialogÀàÖеÄÒ»¸ö²Û£¬Ò»¸öʹÓÃexec()º¯ÊýʵÏÖµÄģ̬¶Ô»°¿òÖ´ÐÐÁËÕâ¸ö²ÛÒ²¾ÍÊÇacceptº¯Êý±»µ÷Ó㬾ͻáÒþ²ØÕâ¸öģ̬¶Ô»°¿ò£¨Ä£Ì¬¶Ô»°¿ò¹Ø±Õ£©£¬²¢·µ»ØÒ»¸öQDialog::AcceptedÖµ£¨Ã¶¾Ù£©£¬ÕâÀï¾ÍÊÇҪʹÓÃÕâ¸öÖµÀ´ÅжÏÄǸö°´Å¥±»°´ÏÂÁË£¬ÓëÆä¶ÔÓ¦µÄ»¹ÓÐÒ»¸öreject()²Û£¬Ëü¿ÉÒÔ·µ»ØÒ»¸öQDialog::Rcject,tedÖµ£¬ÕâÑùÒ²¿ÉÒÔ½áÊøexecº¯Êý¡£
×ܽ᣺
ҪʹÓÃÄÄÖÖģʽ£¬¾Í¸ù¾Ý×Ô¼ºµÄÐèÇóÑ¡Ôñ¼´¿É£¬Èç¹û²»×èÈûÆäËû´°¿ÚÔòÑ¡Ôñ·Çģ̬£¬Èç¹ûÒª×èÈûÆäËû´°¿Ú£¬¾Í¿´Êǽö½öÖ»ÊÇ×èÈû½çÃ棬»¹ÊÇ˵ÔÚ×èÈû½çÃæµÄͬʱijЩ³ÌÐò´úÂëÒ²²»Ö´ÐÐ