Qt make clickable label 制作可点击的Label控件

简介:

Qt中的Label标签控件的作用绝不仅仅限于显示静态文本,其实它的功能很强大,由于其有setPixmap()成员函数,故而可以当显示图片窗口使用,而且还可以实时显示摄像头捕获的图片,然后它对鼠标事件的支持却没有QWidget那样强大,很多时候我们想要QLabel捕获鼠标单击或双击的事件,它本身无法实现,我们只好写一个新的class来实现我们需要的功能,这也是C++的强大之处所在,继承特性可以让我们在原有的基础上无限增加新的特性。那么这里我们想要QLabel捕获鼠标的双击事件,我们需要新建一个类名为QtClickableLabel,继承于QLabel:

qtclickablelabel.h

#ifndef QTCLICKABLELABEL_H
#define QTCLICKABLELABEL_H

#include <QLabel>

class QtClickableLabel : public QLabel
{
    Q_OBJECT

public:
    explicit QtClickableLabel(QWidget *parent = 0);
    explicit QtClickableLabel(const QString &text = "", QWidget *parent = 0);
    ~QtClickableLabel();

signals:
    void clicked();

protected:
    void mouseDoubleClickEvent(QMouseEvent *event);
};
#endif // QTCLICKABLELABEL_H

qtclickablelabel.cpp

#include "qtclickablelabel.h"
QtClickableLabel::QtClickableLabel(const QString &text, QWidget *parent)
    : QLabel(parent)
{
    this->setText(text);
}
QtClickableLabel::QtClickableLabel(QWidget *parent)
    : QLabel(parent)
{
}
QtClickableLabel::~QtClickableLabel()
{
}
void QtClickableLabel::mouseDoubleClickEvent(QMouseEvent *event) {
    emit clicked();
}

如果想实现捕获鼠标单击事件,只需要添加如下代码即可:

void QtClickableLabel::mousePressEvent(QMouseEvent *event) {
    emit clicked();
}

本文转自博客园Grandyang的博客,原文链接:制作可点击的Label控件Qt make clickable label ,如需转载请自行联系原博主。

相关文章
|
3月前
|
前端开发 程序员 API
【Qt】控件介绍
【Qt】控件介绍
|
3月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
260 3
|
3月前
|
存储
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
220 3
|
3月前
|
索引
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
380 3
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
155 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
80 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
315 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
202 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
279 2
|
3月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
95 2