搜索 QAbstractButton
1.鼠标事件
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
virtual void mouseDoubleClickEvent(QMouseEvent *event);
virtual void mouseMoveEvent(QMouseEvent *event);
//鼠标点击 按下 事件
void Event::mousePressEvent(QMouseEvent *event)
{
QString str = QString::number(event->x())
+ ',' + QString::number(event->pos().y());
if (event->button() == Qt::LeftButton)
{
qDebug() << QStringLiteral("左键按下") << str;
}
else if (event->button() == Qt::RightButton)
{
qDebug() << QStringLiteral("右键按下") << str;
}
else if (event->button() == Qt::MidButton)
{
qDebug() << QStringLiteral("MidButton");
}
}
//鼠标点击 抬起 事件
void Event::mouseReleaseEvent(QMouseEvent *event)
{
QString str = QString::number(event->x())
+ ',' + QString::number(event->pos().y());
if (event->button() == Qt::LeftButton)
{
qDebug() << QStringLiteral("左键抬起") << str;
}
else if (event->button() == Qt::RightButton)
{
qDebug() << QStringLiteral("右键抬起") << str;
}
else if (event->button() == Qt::MidButton)
{
qDebug() << QStringLiteral("MidButton");
}
}
setMouseTracking(true); //默认false 设置后不用点击鼠标也会跟踪鼠标
//鼠标移动事件
void Event::mouseMoveEvent(QMouseEvent *event)
{
QString str = QString::number(event->pos().x())
+ ',' + QString::number(event->pos().y());
//qDebug() << QStringLiteral("鼠标移动") << str;
ui.statusBar->showMessage(str);
}
//鼠标双击事件
void Event::mouseDoubleClickEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
qDebug() << qrand() % 10;
//qDebug() << QStringLiteral("左键双击");
}
if (event->button() == Qt::RightButton)
{
//qDebug() << QStringLiteral("右键双击");
}
}
2.键盘事件
virtual void keyPressEvent(QKeyEvent *event);
virtual void keyReleaseEvent(QKeyEvent *event);
//键盘按下事件
void Event::keyPressEvent(QKeyEvent *event)
{
//键盘单键按下
if (event->key())
{
qDebug() << QStringLiteral("键盘按下");
}
//键盘组合键按下
if (event->modifiers() == Qt::CTRL)
{
if (event->key() == Qt::Key_I)
{
qDebug() << QStringLiteral("ctrl + I");
}
}
}
//键盘抬起事件
void Event::keyReleaseEvent(QKeyEvent *event)
{
if (event->key())
{
qDebug() << QStringLiteral("键盘抬起");
}
}
3.滚轮事件
virtual void wheelEvent(QWheelEvent *event);
//滚轮事件
void Event::wheelEvent(QWheelEvent *event)
{
if (event->delta() > 0)
{
qDebug() << QStringLiteral("向前推");
}
else
{
qDebug() << QStringLiteral("向后推");
}
}
4.重绘事件
virtual void paintEvent(QPaintEvent *event);
void Event::paintEvent(QPaintEvent *event)
{
//qDebug() << QStringLiteral("QPaintEvent");
}
5.事件过滤
virtual bool eventFilter(QObject *watched, QEvent *event);
ui.textEdit->installEventFilter(this); //安装Event过滤器
//事件过滤
bool Event::eventFilter(QObject *watched, QEvent *event)
{
if (watched == ui.textEdit)
{
if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
qDebug() << "Ate key press" << keyEvent->key();
return true;
}
else
{
return false;
}
/*if (event->type() == QEvent::MouseButtonPress)
{
qDebug() << "sdakljsajlk";
}*/
}
else
{
return Event::eventFilter(watched, event);
}
}
6.TimerEvent
virtual void timerEvent(QTimerEvent *event);
timer = new QTimer(this);
timer->start(1000); //1秒定时器
//定时器 槽函数
void Event::refreshTime()
{
static int i;
ui.lcdNumber->display(i++);
}
7.随机种子
//设置随机种子
qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
//使用随机数
qDebug() << qrand() % 10;