Необходимо зарегистрировать для него property, чтобы устанавливать разные стили на элемент виджета
slider.h
#ifndef SLIDER_H
#define SLIDER_H
#include "ui_slider.h"
#include <QWidget>
#include <QtGui>
enum ValueType
{
TYPE1,
TYPE2,
TYPE3
};
Q_PROPERTY(int type WRITE type READ type)
class Slider : public QWidget
{
public:
Slider(QWidget * parent = 0, Qt::WindowFlags f = 0);
void setMinimum( float min );
void setMaximum( float max );
void setValue( float val);
void setType( ValueType type);
ValueType getType() const;
private:
Ui_Slider* ui;
};
slider.cpp
void Slider::setType( ValueType type)
{
switch ( type )
{
case TYPE1: setProperty( "type", "TYPE1" ); break;
case TYPE2: setProperty( "type", "TYPE2" ); break;
case TYPE3: setProperty( "type", "TYPE3" ); break;
}
}
ValueType Slider::getType() const
{
return static_cast<ValueType>(property( "type" ).toInt());
}
myform.ui
<widget class='Slider" name="vSlider" native="true">
<property name="type">TYPE1</property>
<property name="geometry">
<rect>
<x>285</x>
<y>10</y>
<width>91</width>
<height>271</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>2000</height>
</size>
</property>
</widget>
и даже после
ui->vSlider->setType( TYPE1 );
стили всё равно не применяются...
Почему-то не получается(т.е. есть стили не применяются), подскажите где ошибка.
может ошибка в qss?
QSlider[ type = "TYPE1" ]:handle
{
background-image: url(:/img/slider_green.png);
width: 10.0px;
background-repeat: no-repeat;
}
да, похоже в qss
сразу поняла, когда написала))
но вопрос всё равно остался
как грамотно написать в qss, который применяется к Slider
QWidget[ type = "NORMAL" ].QSlider:handle
{
background-image: url(:/Images/CommonStateZone/kren_crawler_green.png);
width: 10.0px;
background-repeat: no-repeat;
}