crossplatform.ru

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


  Ответ в Создание property для виджета
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 29.4.2011, 16:38
  вообще макрос Q_PROPERTY нужно писать в объявлении класса. Из документации:
Цитата
Свойство ведёт себя, как член данных класса, но оно имеет дополнительные возможности, доступные через мета-объектную систему
zaytsewa Дата 29.4.2011, 14:43
  спасибо)

проблема была в том, что после изменения опции нужно перезагружать файл стиля
wiz29 Дата 29.4.2011, 13:47
 
Цитата(zaytsewa @ 29.4.2011, 14:24) *
может так правильно Slider[ type = "TYPE3" ]#hSlider:handle (по имени объекта)

если имя встроенного объекта слайдера соответствует ("hSlider", не путать с именем переменной) то тогда нужно написать следующее
Slider[ type = "TYPE3" ] QSlider#hSlider:handle....
zaytsewa Дата 29.4.2011, 13:24
  мне нужно изменить стиль ручки слайдера
может так правильно Slider[ type = "TYPE3" ]#hSlider:handle (по имени объекта)


wiz29 Дата 29.4.2011, 11:33
  зачем ты в qss QSlider приплетаешь, он тут никаким боком не должен участвовать...
zaytsewa Дата 29.4.2011, 11:30
  мне нужно в зависимости от разных опций type класса Slider менять цвет элемента handle у QSlider, который входит в состав класса Slider

поэтому мне нужно что-то типа

Slider[ type = "TYPE1" ] > QSlider:handle
{    
   background-image: url(:/img/slider_green.png);
   width: 10.0px;
   background-repeat: no-repeat;
}
Slider[ type = "TYPE2" ] > QSlider:handle
{    
   background-image: url(:/img/slider_yell.png);
   width: 10.0px;
   background-repeat: no-repeat;
}

Slider[ type = "TYPE3" ] > QSlider:handle
{    
   background-image: url(:/img/slider_red.png);
   width: 10.0px;
   background-repeat: no-repeat;
}




wiz29 Дата 29.4.2011, 11:01
  правильнее думаю было бы так:
.Slider
{
  background-image: url(:/Images/CommonStateZone/kren_crawler_green.png);
  width: 10.0px;
  background-repeat: no-repeat;
}
zaytsewa Дата 29.4.2011, 10:54
  Есть собственный 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;
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 14.11.2019, 22:20