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