QT实现mylabel类

 

1,主界面设计

 

2,代码展示

i,mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include"mylabel.h"
#include<QString>

class Mylabel;
class QLabel;

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

signals:
    void clicked();
    void doubleClicked(); // 双击信号

public slots:
    void slotClicked();
    void slotdoubleClicked();

public:
    Mylabel *my_label;
    //QLabel *label;

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

 ii,mylabel

#ifndef MYLABEL_H
#define MYLABEL_H

#include<QLabel>
#include<QString>
#include<QWidget>
#include<QMainWindow>
#include"QMessageBox"

class Mylabel:public QLabel
{
    Q_OBJECT
    public:
        Mylabel(QWidget * parent = nullptr);
        ~Mylabel(){}


    signals:
        void clicked();
        void doubleClicked(); // 双击信号

    public slots:
        void slotClicked();
        void slotdoubleClicked();


    protected:
        void mousePressEvent(QMouseEvent* event);
        void mouseDoubleClickEvent(QMouseEvent *event); // 鼠标双击事件
};

#endif // MYLABEL_H

iii,main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

iv,mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QtWidgets>
#include"mylabel.h"
#include<QString>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
   // my_label=new Mylabel("label1",this);

    ui->label_3->setStyleSheet("border:1px solid black");
    connect(ui->label_3, SIGNAL(clicked()), this, SLOT(slotClicked()));
    connect(ui->label_3, SIGNAL(doubleClicked()), this, SLOT(slotdoubleClicked()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::slotClicked()
{
    ui->label_3->setWindowFlags(Qt::Window);
    ui->label_3->setScaledContents(true);
    ui->label_3->showFullScreen();
    //qDebug()<<"on_label_clicked";
}

void MainWindow::slotdoubleClicked()
{
            ui->label_3->setWindowFlags(Qt::Window);
            ui->label_3->setScaledContents(true);
            ui->label_3->showNormal ();
}

v,mylabel

#include<QLabel>
#include"mylabel.h"
#include"mainwindow.h"

Mylabel::Mylabel(QWidget * parent)
                :QLabel(parent)
{
  //   this->setText(text);
     connect(this, SIGNAL(clicked()), this, SLOT(slotClicked()));
     connect(this, SIGNAL(doubleClicked()), this, SLOT(slotdoubleClicked()));
}

void Mylabel::slotClicked()
{
//    QMessageBox::information(nullptr, QString::fromLocal8Bit("单击"),
//                             QString::fromLocal8Bit("123"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}

void Mylabel::slotdoubleClicked()
{

}

void Mylabel::mousePressEvent(QMouseEvent* event)
{
    emit clicked();
}

void Mylabel::mouseDoubleClickEvent(QMouseEvent* event)
{
    emit doubleClicked();
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁养浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值