再用qt开发是,经常用到Qlable,而有时候又需要Qlabel具有点击事件,qt提供了事件点击器就能够实现。
QLabel* _label = new QLabel(this); //创建一个label控件
_label->installEventFilter(this); //为label控件安装事件过滤器
//重写eventFilter函数
bool ColorConfig::eventFilter(QObject* watched, QEvent* event)
{
//获取事件类型并进行处理
if (event->type()==QEvent::MouseButtonPress) //左键点击
{
QColor color = QColorDialog::getColor(Qt::red, this,
tr("选择颜色"),
QColorDialog::ShowAlphaChannel);
QPixmap pix(100, 50);
pix.fill(color);
QLabel* _la = qobject_cast<QLabel*>(watched);
if (_la)
{
_la->setPixmap(pix);
}
return true;
}
//未处理事件要返回,否则可能影响某些功能出现问题
return QDialog::eventFilter(watched, event);
}