您的位置:首页 > 编程语言 > Qt开发

《学习Qt之路2》笔记:Qt之事件

2013-07-30 11:04 351 查看
<center><h1>Press: (%1 , %2)</h1></center>表示的是在中间,<h1>表示的是字体

<h1>.......</h1>表示h1字体在中间范围内即(......)中的内容。

这里是表示鼠标按键的事件

代码如下:

#include <QApplication>
#include <QLabel>
#include <QMouseEvent>

class EventLabel : public QLabel
{
protected:
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
};

void EventLabel :: mouseMoveEvent(QMouseEvent *event)
{
this->setText(QString("<center><h1>Move: (%1 , %2)</h1></center>")
.arg(QString::number(event->x()),QString::number(event->y())));
}

void EventLabel :: mousePressEvent(QMouseEvent *event)
{
this->setText(QString("<center><h1>Press: (%1 , %2)</h1></center>")
.arg(QString::number(event->x()),QString::number(event->y())));
}

void EventLabel :: mouseReleaseEvent(QMouseEvent *event)
{
QString msg;
msg.sprintf("<center><h1>Release: (%d , %d)</h1></center>",event->x(),event->y());
this->setText(msg);
}

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
EventLabel *label = new EventLabel;
label->setWindowTitle("MouseEvent Demo");
label->resize(300,200);
label->setMouseTracking(true);
label->show();

return a.exec();
}


button按键事件

代码如下:

//custombutton.h
#include <QPushButton>
#include <QDebug>
#include <QMouseEvent>

class CustomButton : public QPushButton
{
Q_OBJECT
public:
CustomButton(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *event);
private:
void onButtonCliecked();
};

//custombutton.cpp
#include "custombuttom.h"

CustomButton::CustomButton(QWidget *parent ) :
QPushButton(parent)
{
connect(this, &CustomButton::clicked, this, &CustomButton::onButtonCliecked);
}

void CustomButton::onButtonCliecked()
{
qDebug()<<"You clicked this!";
}

void CustomButton::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
qDebug()<<"left";
}
else
{
QPushButton::mousePressEvent(event);
}
}

//main.cpp
#include <QApplication>
#include "custombuttom.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

CustomButton btn;
btn.setText("This is a Button!");
btn.show();
return a.exec();
}


这里需要注意的是:当重写事件回调函数时,时刻注意是否需要通过调用父类的同名函数来确保原有实现仍能继续。

如果想忽略事件,只需要调用父类的响应函数即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: