Hi to all,
I'm doing some test with the style sheet. I'm trying to customize a QSlider.
I create a class inherited from QFrame containing just a QSlider so:
#ifndef __VOLWIDGET_H__
#define __VOLWIDGET_H__
#include <QFrame>
#include <QSlider>
class VolWidget
: public QFrame{
Q_OBJECT
public:
virtual ~VolWidget();
signals:
void sig_volChanged(int);
protected:
private:
};
#endif // __VOLWIDGET_H__
#ifndef __VOLWIDGET_H__
#define __VOLWIDGET_H__
#include <QFrame>
#include <QSlider>
class VolWidget : public QFrame
{
Q_OBJECT
public:
VolWidget( QWidget* parent );
virtual ~VolWidget();
signals:
void sig_volChanged(int);
protected:
private:
QSlider* m_volSlider;
};
#endif // __VOLWIDGET_H__
To copy to clipboard, switch view to plain text mode
After creating the QSlider in the ctor I would apply to it a style using the setStyleSheet routine.
VolWidget
::VolWidget( QWidget* parent
){
setStyleSheet(" QSlider::groove:vertical { \
background: red; \
position: absolute; \
left: 4px; \
right: 4px; }\
QSlider::handle:vertical { \
height: 10px; \
background: green; \
margin: 0 -4px; /* expand outside the groove */ } \
QSlider::add-page:vertical { \
background: white; } \
QSlider::sub-page:vertical { \
background: pink; }");
m_volSlider
= new QSlider(Qt
::Horizontal);
m_volSlider->setMinimum( 0 );
m_volSlider->setMaximum( 100 );
m_volSlider->setValue( 100 );
vLayout->setContentsMargins(0, 0, 0, 0);
vLayout->addWidget(m_volSlider);
setLayout(vLayout);
connect(m_volSlider, SIGNAL( valueChanged(int) ), this, SIGNAL( sig_volChanged(int) ) );
}
VolWidget::VolWidget( QWidget* parent )
: QFrame(parent)
{
setFrameStyle( QFrame::Panel | QFrame::Raised );
setStyleSheet(" QSlider::groove:vertical { \
background: red; \
position: absolute; \
left: 4px; \
right: 4px; }\
QSlider::handle:vertical { \
height: 10px; \
background: green; \
margin: 0 -4px; /* expand outside the groove */ } \
QSlider::add-page:vertical { \
background: white; } \
QSlider::sub-page:vertical { \
background: pink; }");
m_volSlider = new QSlider(Qt::Horizontal);
m_volSlider->setMinimum( 0 );
m_volSlider->setMaximum( 100 );
m_volSlider->setValue( 100 );
QVBoxLayout *vLayout = new QVBoxLayout();
vLayout->setContentsMargins(0, 0, 0, 0);
vLayout->addWidget(m_volSlider);
setLayout(vLayout);
connect(m_volSlider, SIGNAL( valueChanged(int) ), this, SIGNAL( sig_volChanged(int) ) );
}
To copy to clipboard, switch view to plain text mode
In my case the code has no effect. No style sheet is applied to the QSlider.
Where I'm wrong?
Regards
Bookmarks