1、QMouseEvent(鼠标事件)
//按下
void MLable::mousePressEvent(QMouseEvent *ev)
{
int x = ev->x();
int y = ev->y();
QString str = QString("(%1, %2)").arg(x).arg(y);
this->setText(str);
if(ev->button() == Qt::LeftButton)
{
qDebug() << "it is left";
}else if(ev->button() == Qt::RightButton)
{
qDebug() << "it is right";
}else if(ev->button() == Qt::MidButton)
{
qDebug() << "it is Mid";
}
}
//触发
void MLable::mouseReleaseEvent(QMouseEvent *ev)
{
int x = ev->x();
int y = ev->y();
QString str = QString("(%1, %2)").arg(x).arg(y);
this->setText(str);
}
//移动
void MLable::mouseMoveEvent(QMouseEvent *ev)
{
int x = ev->x();
int y = ev->y();
QString str = QString("(%1, %2)").arg(x).arg(y);
this->setText(str);
}
2、QKeyEvent(键盘事件)
void MyKey::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_A) //event->key返回键盘按下去键的ASCII码值。QT::Key_A是个宏,可通过帮助文档查看相关的宏
{
qDebug() << "It is A!";
}else
{
qDebug() << char(event->key());
}
}
3、QTimerEvent(定时器事件)
/*-----------------构造函数-------------------*/
MyKey::MyKey(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyKey)
{
ui->setupUi(this);
timerId = this->startTimer(1000); //以毫秒为单位启动闹钟,timerId是个文件描述符,返回这个闹钟ID
}
.
.
.
void MyKey::timerEvent(QTimerEvent *event)
{
static int sec = 0;
ui->label->setText(QString("Timer: %1").arg(QString::number(sec++)));
if(sec == 5)
{
killTimer(this->timerId); //停止闹钟,通过上面的timerID来停止闹钟。
}
}