<b>Qtѧϰ֮·(31):Ò»¸ö¼òÒ×»°åµÄʵÏÖ(QWidget)</b>[VC/C++±à³Ì]
¡¡¡¡±¾ÎÄ¡°<b>Qtѧϰ֮·(31):Ò»¸ö¼òÒ×»°åµÄʵÏÖ(QWidget)</b>[VC/C++±à³Ì]¡±ÊÇÓÉÆßµÀÆæΪÄú¾«ÐÄÊÕ¼¯£¬À´Ô´ÓÚÍøÂçתÔØ£¬ÎÄÕ°æȨ¹éÎÄÕÂ×÷ÕßËùÓУ¬±¾Õ¾²»¶ÔÆä¹ÛµãÒÔ¼°ÄÚÈÝ×öÈκÎÆÀ¼Û£¬Çë¶ÁÕß×ÔÐÐÅжϣ¬ÒÔÏÂÊÇÆä¾ßÌåÄÚÈÝ£º
˵Õæ»°,±¾À´ÎÒÊÇûÓдòËã·ÅÒ»¸öºÜ´óµÄÀý×ÓµÄ,Ò»Ôò¶Ô±È¸´ÔÓ,¶þÀ´´ó¸ÅÐèÇóºÜ¶à´Î²ÅÄÜ˵µÃÍê.²»¹ý,Ä¿Ç°ÒѾ˵ÍêÁ˻ͼ²¿·Ý,ËùÒԳﻮ»¹ÊÇÉÏÒ»¸öÕâÑùµÄÀý×Ó.ÕâÀïÎÒ»áÖ»×ö³öÒ»¸ö¼òµ¥µÄ»°å³ÌÐò,´óÌåÉϾÍÊÇ¿ÉÒÔ»Ö±Ïߺ;ØÐΰÉ.ÕâÑù,Îҳﻮ·Ö³ÉÁ½ÖÖʵÏÖ,Ò»ÊÇÀûÓÃÆÕͨµÄQWidget×÷Ϊ»°å,µÚ¶þÔòÊÇÀûÓÃGraphcis View FrameworkÀ´ÊµÏÖ.ÒòΪǰÃæÓÐÅóÓÑ˵²»´ó¶®µÃGraphics ViewµÄÏà¹ØÄÚÈÝ,ËùÒԳﻮÈç´Ë.
ºÃÁË,Ä¿Ç°ÏÈÀ´¿´¿´ÎÒÃǵÄÖ÷Ìå¿ò¼Ü.ÎÒÃǵĿò¼Ü»¹ÊÇÀûÓÃQt Creator³ÉÁ¢Ò»¸öGui Application¹¤³Ì.
¼òµ¥µÄmain()º¯Êý¾Í²»ÔÙ׸ÊöÁË,ÕâÀïÊ×ÏÈÀ´¿´MainWindow.³Ã±ã˵һÏÂ,ÎÒÆÕͨ²»»áÀûÓÃuiÎļþ,ËùÒÔÕâЩÄÚÈݶ¼ÊÇÊÖдµÄ.Ê×ÏÈÏÈÀ´¿´¿´ÖÕ¾¿µÄÔËÐкó¹û:
´ó¸ÅºÜ¼òµ¥,µ«ÊÇÖÁÉÙÎÒÃÇ¿ÉÒÔ°ÑÇ°ÃæËù˵µÄ¸÷ÖÖ֪ʶ´®Í¨ÆðÀ´,ÕâÒ²¾Íµ½´ïÄ¿µÄÁË.
Ä¿Ç°ÏÈÀ´¿´¿´MainWindowµÄ´úÂë:
mainwindow.h
#ifndef¡¡MAINWINDOW_H
#define¡¡MAINWINDOW_H
#include¡¡<QtGui>
#include¡¡"shape.h"
#include¡¡"paintwidget.h"
class¡¡MainWindow¡¡:¡¡public¡¡QMainWindow
{
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Q_OBJECT
public:
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡MainWindow(QWidget¡¡*parent¡¡=¡¡0);
signals:
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡void¡¡changeCurrentShape(Shape::Code¡¡newShape);
private¡¡slots:
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡void¡¡drawLineActionTriggered();
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡void¡¡drawRectActionTriggered();
};
#endif¡¡//¡¡MAINWINDOW_H
mainwindow.cpp
#include¡¡"mainwindow.h"
MainWindow::MainWindow(QWidget¡¡*parent)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡:¡¡QMainWindow(parent)
{
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡QToolBar¡¡*bar¡¡=¡¡this->addToolBar("Tools");
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡QActionGroup¡¡*group¡¡=¡¡new¡¡QActionGroup(bar);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡QAction¡¡*drawLineAction¡¡=¡¡new¡¡QAction("Line",¡¡bar);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawLineAction->setIcon(QIcon(":/line.png"));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawLineAction->setToolTip(tr("Draw¡¡a¡¡line."));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawLineAction->setStatusTip(tr("Draw¡¡a¡¡line."));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawLineAction->setCheckable(true);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawLineAction->setChecked(true);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡group->addAction(drawLineAction);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bar->addAction(drawLineAction);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡QAction¡¡*drawRectAction¡¡=¡¡new¡¡QAction("Rectangle",¡¡bar);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawRectAction->setIcon(QIcon(":/rect.png"));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawRectAction->setToolTip(tr("Draw¡¡a¡¡rectangle."));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawRectAction->setStatusTip(tr("Draw¡¡a¡¡rectangle."));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡drawRectAction->setCheckable(true);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡group->addAction(drawRectAction);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bar->addAction(drawRectAction);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡QLabel¡¡*statusMsg¡¡=¡¡new¡¡QLabel;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡statusBar()->addWidget(statusMsg);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PaintWidget¡¡*paintWidget¡¡=¡¡new¡¡PaintWidget(this);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡setCentralWidget(paintWidget);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡connect(drawLineAction,¡¡SIGNAL(triggered()),
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡this,¡¡SLOT(drawLineActionTriggered()));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡connect(drawRectAction,¡¡SIGNAL(triggered()),
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡this,¡¡SLOT(drawRectActionTriggered()));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡connect(this,¡¡SIGNAL(changeCurrentShape(Shape::Code)),
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡paintWidget,¡¡SLOT(setCurrentShape(Shape::Code)));
}
void¡¡MainWindow::drawLineActionTriggered()
{
¡¡emit¡¡changeCurrentShape(Shape::Line);
}
void¡¡MainWindow::drawRectActionTriggered()
{
¡¡emit¡¡changeCurrentShape(Shape::Rect);
}
¡¡¡¡ÒÔÉÏÊÇ¡°<b>Qtѧϰ֮·(31):Ò»¸ö¼òÒ×»°åµÄʵÏÖ(QWidget)</b>[VC/C++±à³Ì]¡±µÄÄÚÈÝ£¬Èç¹ûÄã¶ÔÒÔÉϸÃÎÄÕÂÄÚÈݸÐÐËȤ£¬Äã¿ÉÒÔ¿´¿´ÆßµÀÆæΪÄúÍƼöÒÔÏÂÎÄÕ£º
±¾ÎĵØÖ·£º | ÓëÄúµÄQQ/BBSºÃÓÑ·ÖÏí! |