鼠标事件
鼠标事件包括鼠标的按下、移动、单击、双击、释放等;通过重写鼠标的事件函数完成。
#include "MouseEvent.h"
MouseEvent::MouseEvent(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("鼠标事件"));
statusLabel = new QLabel(tr("当前位置"));
statusLabel->setFixedWidth(100);
mousePosLabel = new QLabel(tr(""));
mousePosLabel->setFixedWidth(100);
// 在MainWindow增加控件
statusBar()->addPermanentWidget(statusLabel);
statusBar()->addPermanentWidget(mousePosLabel);
// 设置窗体追踪鼠标
this->setMouseTracking(true);
resize(400, 200);
}
MouseEvent::~MouseEvent()
{
}
void MouseEvent::mouseMoveEvent(QMouseEvent *event)
{
mousePosLabel->setText("(" + QString::number(event->x()) + "," + QString::number(event->y()) + ")");
}
void MouseEvent::mousePressEvent(QMouseEvent *event)
{
QString str = "(" + QString::number(event->x()) + "," + QString::number(event->y()) + ")";
if (event->button() == Qt::LeftButton)
{
statusBar()->showMessage(tr("左键:") + str);
}
else if (event->button() == Qt::RightButton)
{
statusBar()->showMessage(tr("右键:") + str);
}
else if (event->button() == Qt::MidButton)
{
statusBar()->showMessage(tr("中键") + str);
}
}
// 松开鼠标事件
void MouseEvent::mouseReleaseEvent(QMouseEvent *event)
{
QString str = "(" + QString::number(event->x()) + "," + QString::number(event->y()) + ")";
statusBar()->showMessage(tr("释放在:") + str);
}
键盘事件
在图像处理和游戏应用程序中有时需要通过键盘控制某个对象的移动,此功能可以通过重定义QWidget类的keyPressEvent()和keyReleaseEvent()来实现。