crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 15.7.2025, 1:56