小弟Qt新人,对鼠标事件实在不懂,我的第一个类De继承了QWidget,第二个类MyDrawing继承了De
void De:: mousePressEvent(QMouseEvent *event)
{ if (event->button()==Qt::MidButton)
{
this->windowPos=this->pos();
this->mousePos=event->globalPos();
this->dPos=mousePos-windowPos;
} }
void De:: mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons()&Qt::MidButton)
{this->move(event->globalPos()-this->dPos);
} }
.........................................................................................
void MyDrawing::mousePressEvent(QMouseEvent *e)
{ if(e->button()==Qt::LeftButton)
{ startPnt = e->pos();
endPnt = e->pos();
isPressed = true;
}}
void MyDrawing::mouseMoveEvent(QMouseEvent *e)
{
if(isPressed)
{
endPnt=e->pos();
update();
}}
void MyDrawing::mouseReleaseEvent(QMouseEvent* e)
{ isPressed=false;
myLine* line = new myLine;
line->startPnt = startPnt;
line->endPnt = endPnt;
this->lines.push_back(line);
update();
}
.............................................................
两个类中都定义了mousePressEvent和mouseMoveEvent,De类中按下鼠标滚轮用来移动窗口,MyDrawing类中定义的是按下左键画线。显然
MyDrawing中“mouse....Event”重载了De类,调用时只能左键画线。为了实现两种功能我把其中一个类中的函数名做了改动,但不知道为什么,不管是哪个改了之后,其函数功能就不能实现。
废话了这么多,就是想问是不是只能把函数名定义为“mouse...Event”格式?除了把函数写在一个类中解决上述问题外,有木有其他办法解决啊?
(要在一个窗口中实现两种功能)。小弟小白也,还望高人通俗的讲来。