Qt:添加点击事件的Label并显示图片

Posted WHLOOK

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt:添加点击事件的Label并显示图片相关的知识,希望对你有一定的参考价值。

1.给label添加点击事件

  Qt中原本的label是没有点击事件的,如果想添加点击事件的话,可以继承QLabel类并重载鼠标事件(比如mousePressedEvent),然后在鼠标事件中发送一个信号,具体如下:

// clicklabel.h

#ifndef CLICKEDLABEL_H
#define CLICKEDLABEL_H

#include <QWidget>
#include <QLabel>

class ClickedLabel : public QLabel
{
    Q_OBJECT
public:
    ClickedLabel(QWidget *parent=0): QLabel(parent){}
    ~ClickedLabel() {}
signals:
    void clicked(ClickedLabel* click); // 点击信号
protected:
    void mouseReleaseEvent(QMouseEvent*); // 重载了鼠标释放事件

};

#endif // CLICKEDLABEL_H
// clicklabel.c

#include "clickedlabel.h"
void ClickedLabel::mouseReleaseEvent(QMouseEvent *)
{
    emit clicked(this); // 在点击事件中发送信号
}

2.显示图片

  使用QPixmap可以在label中显示图片,具体如下:

QString path = "logo.png";  // 定义图片的路径

QPixmap img(path); // 实例化一个img

ui->label_img->setPixmap(img); // 在label中添加img

ui->label_img->resize(img.width(),img.height());  // 使用图片尺寸设置label大小

3.完整例程

  新建一个空白的窗体,然后在代码中添加:

// 在mainwindow.h中添加 (包含头文件 clicklabel.h)
private slots:
  void on_label_clicked();
private:   ClickLabel * clickLabel; // 在mainwindow.cpp中的构造函数中添加 clickLabel = new ClickLabel(this); QString path="logo.png"; QPixmap img(path); clickLabel->setPixmap(img); clickLabel->resize(img.width(),img.height());
connect(clickLabel,SIGNAL(clicked(ClickLabel*)),this,SLOT(on_label_clicked()));

 

以上是关于Qt:添加点击事件的Label并显示图片的主要内容,如果未能解决你的问题,请参考以下文章

qt编程为什么不能显示图片:qt 为了让QLabel显示图片,用如下语句:

QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容

QT label上显示图片的问题。

qgraphicsview图片下方添加文字

在QT编程中,QGraphicsView是怎么显示出图片的

我想实现在Qt上按钮上添加背景图片不知怎样实现,