crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Создание property для виджета, Q_PROPERTY
zaytsewa
  опции профиля:
сообщение 29.4.2011, 10:54
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 55
Регистрация: 20.4.2011
Пользователь №: 2620

Спасибо сказали: 1 раз(а)




Репутация:   0  


Есть собственный custom-widget
Необходимо зарегистрировать для него 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;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
wiz29
  опции профиля:
сообщение 29.4.2011, 11:01
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


правильнее думаю было бы так:
.Slider
{
  background-image: url(:/Images/CommonStateZone/kren_crawler_green.png);
  width: 10.0px;
  background-repeat: no-repeat;
}


Сообщение отредактировал wiz29 - 29.4.2011, 11:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 16:12