Qt Label添加点击事件

原创 2016年08月29日 15:31:24

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);//将该事件传给父类处理
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

QT QLabel 单击事件

  有2种方法 最实用的就是用eventFilter的方式 mainwindow.h  #ifndefMAINWINDOW_H#defineMAINWINDOW_H#include#includena...
  • buafnlin
  • buafnlin
  • 2010年10月12日 16:11
  • 8986

QT编程 之 为Label添加点击事件

在使用QT编程过程中发现QLabel没有点击事件,很多想法就不能很好的实现。经过搜索和实践,分享一个兼容性更好,更灵活的方法- - - -重写QLabel。 简单的说就是写一个子类,继承自QLab...
  • mmayanshuo
  • mmayanshuo
  • 2017年06月25日 14:26
  • 1079

Qt QLable 响应单击点击事件

Qt QLable 响应单击点击事件 重写 event()函数 使用继承QLabel,重写事件处理的回调函数mousePressEvent 使用eventFilter事件过滤器...
  • jsjrj01
  • jsjrj01
  • 2017年07月25日 21:18
  • 463

Qt-Qlabel 自定义鼠标点击事件以及文本样式效果设计

最近项目中需要实现一个消息推送的功能,模仿QQ消息弹窗的方式实现
  • kohaku
  • kohaku
  • 2014年04月26日 21:51
  • 9899

QT为QLabel添加Click事件

版权声明请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。 ClickedLabel.h#ifndef CLICKEDLA...
  • tingsking18
  • tingsking18
  • 2009年04月14日 09:50
  • 9977

QT 为按钮添加事件

在vs2010环境中。 使用creator 为按钮添加事件处理
  • a1054359972
  • a1054359972
  • 2016年02月26日 12:02
  • 14200

qt自定义鼠标单击事件标签QLabel

qt自带的QLabel被单击的时候,不会发送出被单击的信号signal。
  • shuideyidi
  • shuideyidi
  • 2014年06月14日 11:26
  • 8710

为QLabel增加Clicked信号

首先从QLabel派生一个类,在其中重载mouseReleaseEvent 虚函数。并定义clicked信号。 在mouseReleaseEvent 函数中发送clicked信号。 ...
  • abeldeng
  • abeldeng
  • 2014年04月30日 09:27
  • 4413

qt label 单击事件

QT中label的click事件
  • tony2278
  • tony2278
  • 2016年08月22日 17:34
  • 1691

自学QT之让label透明和隐藏标题栏

QLabel *label = new QLabel; label->setAttribute(Qt::WA_TranslucentBackground); label->setStyleSheet...
  • xuancailinggan
  • xuancailinggan
  • 2015年09月01日 18:09
  • 4272
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt Label添加点击事件
举报原因:
原因补充:

(最多只允许输入30个字)