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()));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM