您当前的位置: 首页 >  令狐掌门

QLabel实现图片点击效果

令狐掌门 发布时间:2020-09-08 22:30:46 ,浏览量:1

      用QLabel显示图片,当鼠标点击图片时,在图片的周围会有一圈点,感觉是被选中了,Label 事件过滤可以实现该效果。

      头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

    bool eventFilter(QObject *obj, QEvent *event) override;
    void mousePressEvent(QMouseEvent *e) override;

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

     cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //用qss显示图片
    ui->label->setStyleSheet("background-image:url(:/imgs/picture/99.jpg);");
    ui->label->installEventFilter(this);
}

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

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if((QLabel*)obj == ui->label && event->type() == QEvent::MouseButtonPress)
    {
        ui->label->setStyleSheet("QLabel \
        {\
                background-image:url(:/imgs/picture/99.jpg);\
                border-width:2px;\
                border-style:dotted;\
        }");
        return true;
    }
    else
    {
        return false;
    }
}

//点击其它位置时,释放图片被点击的效果
void MainWindow::mousePressEvent(QMouseEvent *e)
{
    ui->label->setStyleSheet("QLabel \
    {\
            background-image:url(:/imgs/picture/99.jpg);\
            border-width:0px;\
            border-style:solid;\
    }");
}

      

关注
打赏
1688896170
查看更多评论

令狐掌门

暂无认证

  • 1浏览

    0关注

    485博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0483s