crossplatform.ru

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

Count0
  опции профиля:
сообщение 24.12.2012, 11:46
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 30.7.2011
Пользователь №: 2772

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




Репутация:   0  


Требуется реализовать класс унаследованыый от Qgradient. Однако при описании самого класса мне не удалось найти каких либо виртуальных методов, которые должен реализовывать наследник для того чтобы градиент работал (То есть методов в которых должны производится расчкты яркости для точки). Каким образом можно реализовать подобное наследование (если вообще можно)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 6)
Алексей1153
  опции профиля:
сообщение 24.12.2012, 14:53
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


можно попробовать:
1) переопределить методы базового класса, изменить параметры и передать родителю
2) взять исходники базового класса, переделать в свой класс
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Count0
  опции профиля:
сообщение 24.12.2012, 16:01
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 30.7.2011
Пользователь №: 2772

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




Репутация:   0  


Цитата(Алексей1153 @ 24.12.2012, 14:53) *
можно попробовать:
1) переопределить методы базового класса, изменить параметры и передать родителю
2) взять исходники базового класса, переделать в свой класс

Переопределить без модификатора virtual в базовом классе разве можно? Это по-моему будет замещение и тогда по указателю на базовый класс не будет вызван мой метод из таблицы виртуальных методов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iReset
  опции профиля:
сообщение 24.12.2012, 17:10
Сообщение #4


Участник
**

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

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




Репутация:   2  


Видимо, на данный момент никак. Дело в том, что сейчас в QGradient и, более того, в QBrush жестко прошиты три типа градиентов, существующих в Qt. Посему Qt может работать только с ними.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 25.12.2012, 6:28
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(Count0 @ 24.12.2012, 19:01) *
Переопределить без модификатора virtual в базовом классе разве можно?

конечно можно

Цитата(Count0 @ 24.12.2012, 19:01) *
по указателю на базовый класс не будет вызван мой метод из таблицы виртуальных методов.

совершенно верно. А кто сказал, что нужно будет пользоваться указателем типа "родительский класс" ? :) Пользуйся новым классом

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iReset
  опции профиля:
сообщение 25.12.2012, 8:45
Сообщение #6


Участник
**

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

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




Репутация:   2  


Цитата(Алексей1153 @ 25.12.2012, 7:28) *
А кто сказал, что нужно будет пользоваться указателем типа "родительский класс" ?

А по-другому нельзя. Если, конечно, этот класс хочется использовать при рисовании. С градиентом работает только QBrush, а он принимает только QGradient, причём зная, что у него есть три и только три типа.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 25.12.2012, 8:50
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


iReset, этого в ТЗ не было :) Было:

Цитата(Count0 @ 24.12.2012, 14:46) *
Требуется реализовать класс унаследованыый от Qgradient.



кстати, OGL наверняка умеет все эти градиенты. Но функции рисования надо будет тоже свои делать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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