Qt自定义控件---QLabel点击事件

xiaoxiao2021-02-28  91

首先看下工程结构

头文件(clickablelabel.h)代码:

#ifndef CLICKABLELABEL_H #define CLICKABLELABEL_H #include <QLabel> #include <QWidget> #include <Qt> class ClickableLabel : public QLabel { Q_OBJECT public: explicit ClickableLabel(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); ~ClickableLabel(); signals: void clicked(); protected: void mousePressEvent(QMouseEvent* event); }; #endif // CLICKABLELABEL_H

Source文件(clickabkekabel.cpp)

#include "clickablelabel.h" #include "clickablelabel.h" ClickableLabel::ClickableLabel(QWidget* parent, Qt::WindowFlags f) : QLabel(parent) { } ClickableLabel::~ClickableLabel() {} void ClickableLabel::mousePressEvent(QMouseEvent* event) { emit clicked(); }

mainwindow.ui 添加一个QLabel控件,然后提升QLabel为自定义的ClickabelLabel,改变信号与槽(即在信号那里添加自定义的clicked()信号,槽那里添加OnClick() )

mianwindow.cpp

(此处我实现的是点击自定义的QLable,然后显示hello)

#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->label,SIGNAL(clicked),this,SLOT(on_label_clicked())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_label_clicked() { ui->label->setText("hello"); }

完成

转载请注明原文地址: https://www.6miu.com/read-47853.html

最新回复(0)