crossplatform.ru

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

> QGradient
Phoenix_nsk
  опции профиля:
сообщение 30.4.2011, 22:13
Сообщение #1


Студент
*

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

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




Репутация:   0  


Не рисуется градиентная заливка.

Вот код:

QRadialGradient gradient(22, 22, 11);
gradient.setColorAt(0.2, Qt::white);
gradient.setColorAt(0.8, Qt::green);
gradient.setColorAt(1, Qt::black);

myPen.setColor(QColor(255, 109, 51));
myPen.setWidth(1);

tempItem->cargo = scene->addEllipse(190, 315, 44, 44, myPen, gradient);


В итоге получается, что вновь добавленый элемент сцены отображается полностью залитый последним из указанных цветов (черным, например).
То же самое происходит и при использовании 2х других видов градиентов.

Что это такое и как это исправить?

Сообщение отредактировал Phoenix_nsk - 30.4.2011, 22:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 3)
Phoenix_nsk
  опции профиля:
сообщение 1.5.2011, 18:38
Сообщение #2


Студент
*

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

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




Репутация:   0  


За 35 просмотров никто не знает ответа?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.5.2011, 20:37
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Phoenix_nsk, на вскидку - ничего криминального.
Хочешь, чтобы люди по тестили? Дай им готовый тестовый пример с проблемой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Phoenix_nsk
  опции профиля:
сообщение 1.5.2011, 21:04
Сообщение #4


Студент
*

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

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




Репутация:   0  


В том то и дело, что ничего нет страшного, но страшно, что не работает. :(
Эм... Код запрятан далеко, вырежу то что относится к сцене сейчас.

    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); // поведение виджета

    gridLayout = new QGridLayout(this);
    gridLayout->setContentsMargins(0, 0, 0, 0);

    scene = new QGraphicsScene(QRect(0, 0, width(), height()), this); // поле для элементов
    view = new SetModelView(scene, this); // для просмотра поля
    view->setFixedSize(width(), height());
    gridLayout->addWidget(view);

    QGraphicsPixmapItem *mainImg = scene->addPixmap(QPixmap(":/images/machine.png"));
    mainImg->setPos(150, 7);

    QPen myPen = QPen(QBrush(QColor(255, 255, 255)), 4, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);

    tempItem = new OneItem();

    tempItem->suspension = scene->addLine(212, 23, 212, 315, myPen);

    QRadialGradient gradient = QRadialGradient(22, 22, 11);
    gradient.setColorAt(0.2, Qt::white);
    gradient.setColorAt(0.8, Qt::green);
    gradient.setColorAt(1, Qt::black);

    myPen.setColor(QColor(255, 109, 51));
    myPen.setWidth(1);

    tempItem->cargo = scene->addEllipse(190, 315, 44, 44, myPen, gradient);

    elems.push_back(tempItem);
    tempItem = 0;

    view->setRenderHint(QPainter::Antialiasing, true); // включить сглаживание примитивов
    view->show();


Где просмотр сцены реализован через класс
class SetModelView : public QGraphicsView
{
    Q_OBJECT

private:
    OneItem *tempItem;  // "рабочий" элемент модели

public:
    SetModelView(QGraphicsScene *scene, QWidget *parent = 0);
};


Вот такие вот дела.
Не работает тут градиентная заливка для добавленного EllipseItem и всё тут. :unknown:

Может быть что-то не так с системой координат?
Потому как tempItem->cargo->setBrush(gradient); даёт результаты.

М?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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