我有一個自定義小部件在我的項目中使用,我試圖通過單擊事件更改背景顏色和標籤顏色。背景顏色的變化,但標籤顏色不會改變......希望有人能幫助找出在我錯了......自定義小部件樣式表未設置屬性
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "myframe.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyFrame *frame = new MyFrame(this);
ui->gridLayout_2->addWidget(frame);
setStyleSheet("MyFrame {background-color: yellow;}"
"MyFrame QLabel{color: black; font: bold 12px;}"
"MyFrame[pressed=\"true\"] {background-color:red;}"
"MyFrame[pressed=\"true\"] QLabel {color:white;}"
);
}
MainWindow::~MainWindow()
{
delete ui;
}
我的自定義部件//頭文件
#ifndef MYFRAME_H
#define MYFRAME_H
#include <QFrame>
#include <QGridLayout>
#include <QLabel>
#include <QDebug>
class MyFrame : public QFrame
{
Q_OBJECT
Q_PROPERTY(bool pressed READ pressed WRITE setPressed)
QGridLayout *layout;
QLabel *name;
public:
explicit MyFrame(QWidget *parent = 0);
signals:
public slots:
bool pressed();
void setPressed(bool);
protected:
bool mPressed;
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
};
#endif // MYFRAME_H
//源文件
#include "myframe.h"
MyFrame::MyFrame(QWidget *parent) :
QFrame(parent)
{
mPressed = false;
layout = new QGridLayout(this);
setLayout(layout);
name = new QLabel("button");
layout->addWidget(name);
}
bool MyFrame::pressed()
{
qDebug() << Q_FUNC_INFO << mPressed;
return mPressed;
}
void MyFrame::setPressed(bool status)
{
qDebug() << Q_FUNC_INFO << status;
mPressed = status;
}
void MyFrame::mousePressEvent(QMouseEvent *event)
{
qDebug() << Q_FUNC_INFO << "mouse pressed";
setPressed(true);
style()->unpolish(this);
style()->polish(this);
}
void MyFrame::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << Q_FUNC_INFO << "mouse released";
setPressed(false);
style()->unpolish(this);
style()->polish(this);
}
框架的背景顏色的變化,但標籤顏色不上點擊
改變
我編輯爲樣式() - > unpolish(this);樣式() - >拋光(本);解決了qframe背景顏色變化的問題。 – Abin 2014-10-28 14:48:05
如果你將使用自定義的'QToolButton'而不是'QFrame',你將會產生相同的效果,而沒有拋光/未拋光的魔法。只有QSS才能完成您的任務。 – 2014-10-28 15:09:22
這只是一個示例應用程序。其實我需要一個自定義按鈕,它有一個圖像和3個標籤..所以我用這樣的 – Abin 2014-10-28 15:16:43