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