Qt,提升QLabel

十一的杂文录 / 2024-10-12 / 原文

 

QLabel不能满足我的需求,需要提升QLabel为自己封装的类

 

在UI中,拉一个QLabel出来,鼠标右键点击QLabel,选择【提升为】,然后填写自己的类。

 

需要注意的是,提升后QLabel需要show一下,不然显示不出来

 

#ifndef MYVIDEO_H
#define MYVIDEO_H

#include <QLabel>
#include <QWidget>
#include <QPaintEvent>
#include <QMouseEvent>
#include <QMessageBox>
#include <QPainter>
#include <QPaintEvent>
#include <QDebug>

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

    void paintEvent(QPaintEvent* e);
    void mousePressEvent(QMouseEvent* e);
};

#endif // MYVIDEO_H

 

#include "myvideo.h"

MyVideo::MyVideo(QWidget* parent):QLabel(parent)
{
    // setStyleSheet("background-color:red");

    // 需要show一下,不然显示不出来
    show();
}

MyVideo::~MyVideo()
{

}

void MyVideo::paintEvent(QPaintEvent *e)
{
    QPainter p(this);

    QPen pen;
    pen.setColor(Qt::red);
    pen.setWidth(10);
    p.setPen(pen);

    p.drawLine(10,10,100,100);
}

void MyVideo::mousePressEvent(QMouseEvent *e)
{
    QMessageBox::information(nullptr, "123", "123");
    // qDebug() << "123";
}