Qt 中 QLabel 自定義文字的顏色狀態,設定為三種狀態(類似於Qcheckbutton裡面的checked unchecked)
阿新 • • 發佈:2019-02-16
1 自定義設定Qlabel文字顏色狀態。 別的類可以進行類推
2 qss 的設定#ifndef QCOMPLEXLABEL_H #define QCOMPLEXLABEL_H #include <QObject> #include <QWidget> #include <QLabel> class QComplexLabel : public QLabel { Q_OBJECT Q_PROPERTY(QColor normalColor READ normalColor WRITE setNormalColor) Q_PROPERTY(QColor errorColor READ errorColor WRITE setErrorColor) Q_PROPERTY(QColor unknownColor READ unknownColor WRITE setUnknownColor) public: QComplexLabel(QWidget *parent = 0); enum LabelState{ Normal = 0x00, Error = 0x01, Unknown = 0x02 }; void setNormalColor(const QColor &newColor) { m_normalColor = newColor; } QColor normalColor() const { return m_normalColor; } void setErrorColor(const QColor &newColor) { m_errorColor = newColor; } QColor errorColor() const { return m_errorColor; } void setUnknownColor(const QColor &newColor) { m_unknownColor = newColor; } QColor unknownColor() const { return m_unknownColor; } void setLabelState(LabelState state) { m_labelState = state; QColor color = m_normalColor; switch (m_labelState) { case Normal: color = m_normalColor; break; case Error: color = m_errorColor; break; case Unknown: color = m_unknownColor; break; default: color = m_normalColor; break; } QString qss = "color:rgb(" + QString::number(color.red()) + "," + QString::number(color.green()) + "," + QString::number(color.blue()) +");"; setStyleSheet(qss); } private: LabelState m_labelState; QColor m_normalColor; QColor m_errorColor; QColor m_unknownColor; }; #endif // QCOMPLEXLABEL_H
QComplexLabel {
color : rgb(199,99,99);
qproperty-normalColor:rgb(0,0,0);
qproperty-errorColor:rgb(255,0,0);
qproperty-unknownColor:rgb(192,192,192);
}
3 選擇合適的位置進行讀取qss(例如 main.cpp 中)
QFile styleSheet(QString(":/image/qss")); styleSheet.open(QIODevice::ReadOnly); a.setStyleSheet(styleSheet.readAll()); styleSheet.close();
4 設定qlabel的顏色狀態,需要使用的地方呼叫下面的語句就可以用了。
ui->label->setLabelState(QComplexLabel::Normal); //這樣就可以使用自定義的QLabel的狀態 (Normal Error Unknown)