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

来源:互联网 发布:seo网络优化培训 编辑:程序博客网 时间:2024/05/20 00:16

首先看下工程结构




头文件(clickablelabel.h)代码:

#ifndef CLICKABLELABEL_H#define CLICKABLELABEL_H#include <QLabel>#include <QWidget>#include <Qt>class ClickableLabel : public QLabel {    Q_OBJECTpublic:    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");}


完成

原创粉丝点击