crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
barabaka
  опции профиля:
сообщение 14.11.2011, 12:17
Сообщение #1


Студент
*

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

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




Репутация:   2  


Здравствуйте.Вопрос следующий: у меня есть QGraphicsRectItem,в который я добавляю объекты с помощью addRect() прямо в классе главного окна приложения.После этого я получаю их список с помощью items() и потом мне в моей программе по условию надо нарисовать на них текст.Это можно сделать без сабклассов? Чтобы просто с помощью указателя на айтем нарисовать текст на нём?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 14.11.2011, 12:58
Сообщение #2


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

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

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




Репутация:   12  


вопрос не совсем понятен. возможно лучше просто использовать QGraphicsTextItem вместо QGraphicsRectItem.

в любом случае без преобразования к конкретному типу не получится ничего сделать в QGraphicsItem нет методов по установки текста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
barabaka
  опции профиля:
сообщение 14.11.2011, 16:20
Сообщение #3


Студент
*

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

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




Репутация:   2  


Да. Метод Items() возвращает список QGraphicsItems. Потом я делаю итератор для этого списка и кладу их в новый список QList<QraphicsRectItems*> с приведением типа к QGraphicsRectItem*.Просто у меня есть класс внутрь которого я передаю указатели на эти прямоугольники и мне внутри него надо их раскрашивать. Вопрос : мне кроме смены цвета прямоугольников надо текст в них разный вставлять. Так вот как это сделать? Просто в QGraphicsTextItem вроде нельзя фон менять
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 14.11.2011, 16:30
Сообщение #4


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

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

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




Репутация:   12  


как вариант можно сделать дочерний элемент с текстом для каждого прямоугольника.
но по моему было бы проще переопределить процедуру рисования элемента, либо возможно, можно использовать QGraphicsPixmapItem для прямоугольников (но этот вариант уже зависит от задачи).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
barabaka
  опции профиля:
сообщение 14.11.2011, 16:37
Сообщение #5


Студент
*

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

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




Репутация:   2  


Для переопределения рисования надо сабкласс делать? Если да то смогу я использовать родительский конструктор? и затем просто менять текст на прямоугольниках ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
barabaka
  опции профиля:
сообщение 14.11.2011, 21:02
Сообщение #6


Студент
*

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

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




Репутация:   2  


Спасибо за ответы.У меня получилось с субклассом от RectItem.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
barabaka
  опции профиля:
сообщение 15.11.2011, 3:16
Сообщение #7


Студент
*

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

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




Репутация:   2  


Не получилось.один прямоугольник с текстом на сцену я добавил.
void MyRect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    QPen pen;pen.setColor(Qt::cyan);
    QBrush br(Qt::BackgroundColorRole);
    QRectF rec=this->rect();

    painter->drawRect(20,20,20,20);
}


прямоугольника нет.задача следующая:есть на форме прямоугольник QGraphicsView.Я хочу его заполнить идущими подряд равными по ширине прямоугольниками,для которых хочу менять цвет и устанавливать текст.Это индикатор буфера.

конструктор прямоугольника
MyRect::MyRect(qreal x,qreal y,qreal w,qreal h):QGraphicsRectItem(x,y,w,h)
{
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 15.11.2011, 9:09
Сообщение #8


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

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

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




Репутация:   12  


в чем состоит проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
barabaka
  опции профиля:
сообщение 15.11.2011, 11:58
Сообщение #9


Студент
*

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

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




Репутация:   2  


В том что прямоугольник не рисуется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 15.11.2011, 12:13
Сообщение #10


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

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

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




Репутация:   12  


Цитата(barabaka @ 15.11.2011, 12:58) *
В том что прямоугольник не рисуется.

void MyRect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    QPen pen;
    pen.setColor(Qt::cyan);
    QBrush br(Qt::BackgroundColorRole);
    QRectF rec=this->rect();
    
    painter->setPen(pen);//add this line
    painter->drawRect(20,20,20,20);
}


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

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 21.6.2025, 1:18