In my code I customized the QLabel and defined the signal of clicked. I want to set the QLabel's style by qss file. It seems that the hover status works but the press status doesn't work.
Anybody knows what is wrong?
dlabel.h
#ifndef DLABEL_H
#define DLABEL_H
#include <QtWidgets>
#include <QtGui>
#include <QtCore>
class DLabel : public QLabel
{
Q_OBJECT
public:
DLabel(QWidget *parent = 0);
int labelId;
~DLabel();
protected:
void enterEvent(QEvent *e);
void leaveEvent(QEvent *e);
void mousePressEvent(QMouseEvent *ev);
void mouseReleaseEvent(QMouseEvent *ev);
public slots:
void labelclick();
void labelpressed();
private:
bool m_enter;
bool m_leave;
signals:
void enterArea();
void leaveArea();
void clicked();
void pressed();
void labelclicked(int labelId);
};
dlabel.cpp
#include "dlabel.h"
DLabel::DLabel(QWidget *parent)
: QLabel(parent)
{
connect(this, SIGNAL(clicked()), this, SLOT(labelclick()));
}
DLabel::~DLabel()
{
}
void DLabel::enterEvent(QEvent *e) {
Q_UNUSED(e);
emit enterArea();
}
void DLabel::leaveEvent(QEvent *e) {
Q_UNUSED(e);
emit leaveArea();
}
void DLabel::mousePressEvent(QMouseEvent *ev) {
Q_UNUSED(ev);
emit pressed();
}
void DLabel::mouseReleaseEvent(QMouseEvent *ev) {
Q_UNUSED(ev);
emit clicked();
}
void DLabel::labelclick() {
emit labelclicked(labelId);
}
void DLabel::labelpressed() {
}
The .qss file
QLabel{
background-color: transparent;
color: white;
/*border: 2px solid rgba(255, 255, 255, 100);*/
/*border-radius: 32px;*/
/*border-color: white*/
}
QLabel:hover{
background-color: transparent;
color: red;
/*border: 2px solid rgba(255, 255, 255, 100);*/
/*border-radius: 32px;*/
/*border-color: white*/
}
QLabel:pressed{
background-color: transparent;
color: white;
/*border: 2px solid rgba(255, 255, 255, 100);*/
/*border-radius: 32px;*/
/*border-color: white*/
}