qt在重写鼠标事件时最后加上函数是为什么,

qt在重写鼠标事件时最后加上函数是为什么,,第1张

1.新建Qt Gui应用,项目名称为myEvent,基类更改为QWidget,类名为Widget。

2.完成项目创建后,在设计模式向界面上拖入一个Push Button。

3.在widget.h文件添加鼠标按下事件处理函数声明:

protected:

void mousePressEvent(QMouseEvent *)

4.到widget.cpp文件中先添加头文件包含:

#include <QMouseEvent>

然后在下面添加函数的定义:

void Widget::mousePressEvent(QMouseEvent *e)

{

ui->pushButton->setText(tr("(%1,%2)").arg(e->x()).arg(e->y()))

}

这里的arg()里的参数分别用来填充%1和%2处的内容,arg()是QString类中的一个静态函数,使用它就可以在字符串中使用变量了。其中x()和y()分别用来返回鼠标光标所在位置的x和y坐标值。这样,当鼠标在界面上点击时,按钮就会显示出当前鼠标的坐标值。效果如下图所示。

除了鼠标按下事件,还有鼠标释放、双击、移动、滚轮等事件,其处理方式与这个例子是相似的。

二、键盘事件

1.首先在widget.h中添加protected函数声明:

void keyPressEvent(QKeyEvent *)

2.然后到widget.cpp中添加头文件包含:

#include <QKeyEvent>

3.最后添加键盘按下事件处理函数的定义:

void Widget::keyPressEvent(QKeyEvent *e)

{

int x = ui->pushButton->x()

int y = ui->pushButton->y()

switch (e->key())

{

case Qt::Key_W : ui->pushButton->move(x, y-10)break

case Qt::Key_S : ui->pushButton->move(x, y+10)break

case Qt::Key_A : ui->pushButton->move(x-10, y)break

case Qt::Key_D : ui->pushButton->move(x+10, y)break

}

}

这里我们先获取了按钮的位置,然后使用key()函数获取按下的按键,如果是指定的W、S、A、D等按键时则移动按钮。所有的按键都在Qt::Key枚举变量中进行了定义,大家可以在帮助文档中进行查看。

结语

qDebug()<<"mouse clicked"

        QPoint pos(403,34)

        QMouseEvent event0(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier)

        QApplication::sendEvent(view->page(), &event0)

        QMouseEvent event1(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier)

        QApplication::sendEvent(view->page(), &event1)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7912502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存