用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;\
}");
}
