1.鼠标点击事件:
void myQlabel::mousePressEvent(QMouseEvent *event)
{
int i=event->x();//获取鼠标点击的地方横坐标
int j=event->y();//获取鼠标点击地方的纵坐标
if(event->button()==Qt::LeftButton)//如果是鼠标左键点击的话
{
}
else if(event->button()==Qt::RightButton)//如果是右键
{
}
else if(event->button()==Qt::MiddleButton)//如果是滚轮键
{
}
}
上面的myQlabel是一个新创建的类,可以在ui中让窗口提升为这个类就可以相联系
//鼠标释放事件
void myQlabel::mouseReleaseEvent(QMouseEvent *event)
{
}
鼠标移动事件
void myQlabel::mouseMoveEvent(QMouseEvent *event)
{
}
2.窗口事件
//进入窗口界面
void myQlabel::enterEvent(QEvent *event)
{
}
//离开窗口界面
void myQlabel::leaveEvent(QEvent *event)
{
}
注意,这些函数都要写在myQlabel中的保护类:
protected:
//鼠标点击事件
void mousePressEvent(QMouseEvent *event);
//鼠标移动事件
void mouseMoveEvent(QMouseEvent *event);
//鼠标释放事件
void mouseReleaseEvent(QMouseEvent *event);
//进入窗口区域
void enterEvent(QEvent *event);
void leaveEvent(QEvent *event);
3.键盘事件
先在基类中写上:
protected:
void keyPressEvent(QKeyEvent *event);
然后
void Widget::keyPressEvent(QKeyEvent *event)
{
qDebug()<<event->key();
}
这样就会打印出键盘输入数据的ascii码值
4.计时器事件
先在头文件声明:
void timerEvent(QTimerEvent *event);
然后:
void Widget::timerEvent(QTimerEvent *event)
{
static int tim=0;
tim++;
QString text=QString("<center><h1>Time:(%1)</h1></center>").arg(tim);
ui->label->setText(text);
}
效果:
取消定时器:
先定义一个整形变量:
private:
int timeId;
};
然后在构造函数中声明:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
timeId=this->startTimer(1000);
}
然后
void Widget::timerEvent(QTimerEvent *event)
{
static int tim=0;
tim++;
QString text=QString("<center><h1>Time:(%1)</h1></center>").arg(tim);
ui->label->setText(text);
if(tim==5)
{
this->killTimer(this->timeId);
}
}
如果要两个定时器的话,那么就先在ui中布局两个label
然后
private:
Ui::Widget *ui;
int timeId;
int timeId2;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
timeId=this->startTimer(1000);
timeId2=this->startTimer(1000);
}
void Widget::timerEvent(QTimerEvent *event)
{
static int tim=0;
if(event->timerId()==this->timeId)
{
QString text=QString("<center><h1>Time:(%1)</h1></center>").arg(tim++);
ui->label->setText(text);
}
else if(event->timerId()==this->timeId2)
{
QString text=QString("<center><h1>Time:(%1)</h1></center>").arg(tim++);
ui->label_2->setText(text);
}
}