Russian Qt Forum
Ноябрь 24, 2024, 12:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Наследование классов и обьектов  (Прочитано 13874 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #15 : Март 13, 2013, 14:11 »

Пока надо до конца понять что такое Абстрактный класс и с чем его едят.
Сейчас ситуация такова:
Цель - сформировать каркас проекта. Определить общие для всех типов загружаемых данных функции.
Звучит довольно расплывчато. Пока я не увидел что Вы хотите обобщить и для чего нужен абстрактный класс.
+1 стена текста, а непонятно ничего
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
skytrain
Гость
« Ответ #16 : Март 13, 2013, 23:17 »

Ух...
Стена текста - это не цель.!!!!
Не пойму как организовать классы и вызов нужных функций.
Хочу виджет. На нем Форма(или что-либо квадратное на чем можно рисовать). На форме картинка Внизу кнопки и.т.п
Хочу обработку картинок в программе.
Хочу вынести общую функциональность (загрузку и.т.п) в абстрактный класс.

Виртуальный метод iLoad (Виртуальность наследуется из абстрактного класса).
Код:
хочу сделать обработку кадров. На форме будет показываться кадр и слева будет выбор эффектов. 
А так я до сих пор не понимаю, нафига тебе QFrame... Всё что ты описал в вышестоящем сообщении - это переопределение paintEvent у виджета и... всё?! помоему всё.
Вы абсолютно правы:) Все именно так.

Код в тарболе.
http://rusfolder.com/35456815
Сейчас при компиляции та-же ошибка, что и была в начале темы. Не наследуется класс....
Не судите сильно строго. Нарваться на одну и ту-же ошибку три раза - это перебор.
Спасибо.
Записан
skytrain
Гость
« Ответ #17 : Март 14, 2013, 03:50 »

Доброй ночи.
Почему не компилировалось - разобрался. (не нужно включать заголовки там, где достаточно прототипов классов)
Как через указатель на абстрактный класс получить доступ к public ф-ям QFrame - разобрался.
В иерархии объектов и классов разобрался. Все как надо.

В принципе по теме вопросов не имею.
Всем спасибо.

Если кому интересно, то исходники приведу в порядок и скину завтра днем.
И если будут какие замечания\рекомендации - буду  признателен.
Записан
Bepec
Гость
« Ответ #18 : Март 14, 2013, 06:56 »

Я б вообще не вникал в ваши абстрактные классы с методами Улыбающийся Простое наследование от QWidget для вывода, класс обрабатывающий картинки - от QObject'a, класс менеджер (при необходимости) тоже от QObject'a.

И тогда получается у вас картинка будет получена, помещена на QWidget. Кнопочки испускают сигналки в класс-обработчик, QWidget перерисовывается с новыми эффектами.

PS хотя мб я и неправ, кто знает ваши мысли Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Март 14, 2013, 09:13 »

Хочу вынести общую функциональность (загрузку и.т.п) в абстрактный класс.
Виртуальный метод iLoad
Впечатление что чем больше абстрактных классов, виртуальных методов и.т.п. - тем лучше Улыбающийся По-моему все  наоборот. Конечно если цель потренироваться с этим - на здоровье, но чего это Load (загрузка картинки с диска) виртуальный? Чем отличается этот ф-ционал для разных потомков? Как правило, порождение новых классов должно быть вынужденно, иначе Вы просто "плодите сущности" которые оказываются пустыми/дутыми и никакой смысловой нагрузки не несут.

Об этом можно почитать здесь http://www.insidecpp.ru/antipatterns/interface_bloat/
Записан
skytrain
Гость
« Ответ #20 : Март 15, 2013, 05:44 »

В общем абстрактный класс был задуман как тренировка + задел на будущее.
Метод загрузки может сильно отличаться входным форматированием. Мы же не пишем программы для одного разрешения, расширения или устройства... например.
Виртуальным методом может быть установка какого либо фильтра.
Я б вообще не вникал в ваши абстрактные классы с методами Улыбающийся Простое наследование от QWidget для вывода, класс обрабатывающий картинки - от QObject'a, класс менеджер (при необходимости) тоже от QObject'a.
Если честно, то класс менеджер - это пока понятие очень туманное.... для меня.
QFrame и так от QObject'a.
Форму и другие объекты типа кнопок можно увидеть в дизайнере.... скомпоновать например.

И тогда получается у вас картинка будет получена, помещена на QWidget.
PS хотя мб я и не прав, кто знает ваши мысли Веселый
Но в таком случае я-б думал в направлении создания второго виджета 1-го уровня.
А пока думаю как заставить форму изменять размер вместе с главным окном.
Ну и..
Код:
img.scaled(sizePreview,Qt::KeepAspectRatio,Qt::FastTransformation);
Может что-то упускаю, но мне сдается что у нее нет реализации в самой Qt.
В нее я не могу зайти в отладчике.Улыбающийся От ее применения картинке ни холодно ни жарко.

Оффтоп но. Почему ui->frame->sizeHint() может возвращать QSize(0, 0) если фрейм внутри компоновщика?
« Последнее редактирование: Март 15, 2013, 06:13 от skytrain » Записан
carrygun
Гость
« Ответ #21 : Март 15, 2013, 13:44 »

Фрейм пустой и его "сжало" компановщиком в точку.
Записан
Bepec
Гость
« Ответ #22 : Март 15, 2013, 13:51 »

А ещё нужно учесть и функцию в которой sizeHint вызываешь. В конструкторе такая комбинация не прокатит Веселый
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.062 секунд. Запросов: 23.