3

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*/
}
Mailerdaimon
  • 6,003
  • 3
  • 35
  • 46
seme
  • 43
  • 7
  • My last comment was wrong. QLabel does not have a :pressed state. You have to support it yourself, see: http://stackoverflow.com/q/18103670/2927205 – Mailerdaimon Jul 23 '15 at 06:25
  • Yes, i think the solution to this problem maybe like that url you offered: stackoverflow.com/q/18103670/2927205. @Mailerdaimon, thanks! – seme Jul 24 '15 at 01:01

0 Answers0