问题2无论是点击左键,右键还是中键,都可触发信号且没有区分。
这个比较简单,就是实现左键单击,左键双击,右键单击功能。直接上代码
QXHLabel::QXHLabel(QWidget *parent)
:QLabel(parent)
{
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
m_isLPressed = false;
}
void QXHLabel::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
m_isLPressed = true;
}
}
void QXHLabel::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
if (m_isLPressed)
{
m_timer->start(180);
}
m_isLPressed = false;
}
else if (event->button() == Qt::RightButton)
{
emit RClicked();
}
}
void QXHLabel::mouseDoubleClickEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
m_timer->stop();
emit doubleClicked();
}
}
void QXHLabel::onTimeout()
{
m_timer->stop();
emit LClicked();
}