Название: paintEvent прорисовка виджета Отправлено: TranE91 от Апрель 18, 2011, 05:06 Qt изучаю не так уж много, время обрезает возможность углубиться. Проблемка такова:
Код: class A: public QWidget Как понял, если выразить данную постановку задачи как от унаследованных членов графической сцены, то выглядеть это будет как-то так: Код: class A: QGraphicsScene Название: Re: paintEvent прорисовка виджета Отправлено: blood_shadow от Апрель 18, 2011, 10:26 ни вижу причин чудить с друзьями класса, друзья классы как мне кажется нарушают инкапсуляцию
если необходимо в каждом классе сделать возможность своего "особенного" рисования, это можно реализовать через виртуальные ф-ции и наследование, то есть: Код
более того чтобы класс А представлял только интерфейс его можно сделать абстрактным, и заставить все классы переопределять void somePaint() в обязательном порядке: Код Если же класс А не будет абстрактным и в классах-потомках не переопределять виртуальную ф-цию, то для классов B и C будет вызываться void A::somePaint() Название: Re: paintEvent прорисовка виджета Отправлено: TranE91 от Апрель 18, 2011, 17:38 Хм, вот насчет виртуальных ф-ий спасибо конечно за идейку, но дело в том, что при реализации поставленной мне задачи, юедт не совсем правильно реализовать систему с помощью наследования.
Нужно реализовать нотный стан (табулатуру). Дорожка: включает в себя список Тактов. Такт: включает в себя список Нот. Пока что только такая идея систематизации пришла на ум. Название: Re: paintEvent прорисовка виджета Отправлено: blood_shadow от Апрель 18, 2011, 19:26 Хм, вот насчет виртуальных ф-ий спасибо конечно за идейку, но дело в том, что при реализации поставленной мне задачи, юедт не совсем правильно реализовать систему с помощью наследования. эта схема организации подходит для контейнеров например:Нужно реализовать нотный стан (табулатуру). Дорожка: включает в себя список Тактов. Такт: включает в себя список Нот. Пока что только такая идея систематизации пришла на ум. одну дорожку можно представить как -> QList <QStringList> думаю должно подойти Название: Re: paintEvent прорисовка виджета Отправлено: TranE91 от Апрель 19, 2011, 02:47 Ну что-то наподобие того, что я в самом начале предлагал использовать, только без наследования.
Теперь столкнулся с другой проблемкой, прорисовкой. Код
Код
Код
Код: QPainter::begin: Paint device returned engine == 0, type: 1 Название: Re: paintEvent прорисовка виджета Отправлено: GreatSnake от Апрель 19, 2011, 10:15 Цитата: assistant::QPainter Warning: When the paintdevice is a widget, QPainter can only be used inside a paintEvent() function or in a function called by paintEvent(); that is unless the Qt::WA_PaintOutsidePaintEvent widget attribute is set. On Mac OS X and Windows, you can only paint in a paintEvent() function regardless of this attribute's setting. И непонятно - какой вообще смысл в Note? Ведь как виджет он не используется. Кто мешает отрисовать линию в Track::paintEvent()? Название: Re: paintEvent прорисовка виджета Отправлено: blood_shadow от Апрель 19, 2011, 11:25 вообщем как сказали выше нельзя рисовать по виджету вне QPaintEvent()
если у тебя столь простые ноты можно вообще не организовать для них отдельный класс если же класс надо, и реализововать такие примитивные действия как рисования линий, то ненужно наследоватся от Track и QWidget, ты же не рисуешь виджет, посмотри в ассистанте Star Delegate Example Название: Re: paintEvent прорисовка виджета Отправлено: TranE91 от Апрель 19, 2011, 19:52 Сэнкс, кажется суть уловил, но радости от этого не так уж много.
|