Qt Label添加点击事件

Qt添加点击事件

A "clicked" signal may sometimes be required from a label, but there is no "clicked" signal emitted by QLabel. You can work around this easily by making a QPushButton like a label by setting the 'flat' property.

   在label上有可能需要一个“clicked”信号,但是在QLabel类中没有“clicked”信号,QPushButton更容易使用。

However, if there are other properties of a QLabel object that you need, here is a code snippet for a custom QLabel which can emit a signal: 'clicked'. In other words, a Clickable QLabel!

    然而,如果需要QLabel一些其他的属性,这里有自定义的QLabel发送'clicked'信号,就是,这个可点击的QLabel

Header

class ClickableLabel : public QLabel
{
Q_OBJECT
public:
    explicit ClickableLabel( const QString& text="", QWidget* parent=0 );
    ~ClickableLabel();
signals:
    void clicked();
protected:
    void mousePressEvent(QMouseEvent* event);};

Source

 

ClickableLabel::ClickableLabel(const QString& text, QWidget* parent)
    : QLabel(parent)
{
    setText(text);
}
 
ClickableLabel::~ClickableLabel()
{
 
}
void ClickableLabel::mousePressEvent(QMouseEvent* event)
{
    emit clicked();
}

What we do here is simple: Catch the mouse press event on the label. Then emit 'clicked' signal. We could as well make the signal be emitted when mouse gets released. This is let to be a decision of the developer.

这里是最简单的例子,在label上获取鼠标点击事件,然后发送'clicked'信号,可以当鼠标释放的时候发送信号,这由开发这定义。

http://wiki.qt.io/Make-a-QLabel-Clickable


下面是修改的mousePressEvent

void ClickLabel::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
        emit clicked();
    }
 
    QLabel::mousePressEvent(event);//将该事件传给父类处理
}


  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值