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

Qt学习之十三:事件

2016-09-10 20:25 309 查看
事件驱动: 所谓的“事件驱动”,我们的程序的执行顺序不再是线性的,而是由一个个事件驱动着程序继续执行。没有事件,程序将阻塞在那里,不执行任何代码。如果我们使用组件,我们关心的是信号槽;如果我们自定义组件, 我们关心的是事件。

实例:鼠标点击

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);

}


EventLabel 继承了 QLabel,覆盖了 mousePressEvent()、 mouseMoveEvent() 和

MouseReleaseEvent() 三个函数。我们并没有添加什么功能,只是在鼠标按下( press)、鼠标移动( move)和鼠标释放( release)的时候,把当前鼠标的坐标值显示在这个 Label 上面。由于 QLabel 是支持 HTML 代码的,因此我们直接使用了 HTML 代码来格式化文字。

QString 的 arg() 函数可以自动替换掉 QString 中出现的占位符。其占位符以 % 开始,后面是占位符的位置,例如 %1, %2 这种。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: