Название: Почему не меняется толщина круга? Отправлено: jojahti от Август 17, 2009, 17:53 Почему не меняется толщина круга при нажатии на кнопку?
paint.h Код: #ifndef PAINT_H paint.cpp Код: #include <QtGui> main.cpp Код: #include <QApplication> Название: Re: Почему не меняется толщина круга? Отправлено: lit-uriy от Август 17, 2009, 17:56 потому что рисовать на виджете можно только в его обработчике события paintEvent
Название: Re: Почему не меняется толщина круга? Отправлено: jojahti от Август 17, 2009, 19:45 lit-uriy пишет:
Цитировать потому что рисовать на виджете можно только в его обработчике события paintEvent Ну во первых я там ничего не рисовал, во вторых - вот я рисую не в paintEvent, и модифицирую кнопочкой толщину.1) Тоесть вопрос уже такой - почему в прошлом примере это не получается? 2) Вопрос можно несколько конкретизировать. Я смогу только с помощью QPaint перевести своего самопального пакмэна в графический режим? Или мне полюбому придётся разбираться ещё и в Graphics vievs framevork? Подходит ли вообще QPaint для этой задачи? renderarea.h Код: #ifndef RENDERAREA_H window.h Код: #ifndef WINDOW_H //====================================// renderarea.cpp Цитировать #include <QtGui> //==============================================//#include "renderarea.h" RenderArea::RenderArea(const QPainterPath &path, QWidget *parent) : QWidget(parent), path(path) { penwidth = 1; setBackgroundRole(QPalette::Base); } void RenderArea::chlinewidth() { penwidth=20; update(); } void RenderArea::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.scale(width() / 100.0, height() / 100.0); painter.translate(50.0, 50.0); painter.translate(-50.0, -50.0); painter.setPen(QPen(Qt::black, penwidth, Qt::SolidLine, Qt::RoundCap)); QLinearGradient gradient(0, 0, 0, 100); painter.setBrush(gradient); painter.drawPath(path); } window.cpp Код: #include <QtGui> main.cpp Код: #include <QApplication> Название: Re: Почему не меняется толщина круга? Отправлено: boobsik от Август 18, 2009, 12:21 ты создаешь в paintEvent новый обьект QPainter, не тот который в слоте cpaint(), просто сделай QPainter ellipse_painter членом класса RenderArea
class RenderArea : public QWidget { QPainter ellipse_painter; public: setElipsePen(QPen pen); ... Название: Re: Почему не меняется толщина круга? Отправлено: jojahti от Август 19, 2009, 08:21 Ну не знаю. Вообщем я такой вывод сделал, что QPainter для таких вещей банально непредназначен.
С помощью него удобно отрисовать и преобразовать что-то статичное. Тоесть отрисует он только в момент создания формы. Единственное, что можно сделать после - накладывать маски и играться с пером. А для отрисовки всяких движущихся/перекрывающихся/сталкивающихся вещей в QT есть графическая среда Graphics View Framework, в виде модели - сцена-предмет-отображение. В которую сейчас и вкуриваюсь. :-\ Вот чё так несправедливо!? По делфи целые библиотеки о том, как перетаскивать на формочку кнопочки. А по QT, где %:нешься, пока разберёшься, каких-то две книжечки, явно обделённых примерами. Название: Re: Почему не меняется толщина круга? Отправлено: ритт от Август 19, 2009, 08:41 все умозаключения предыдущего поста неверны...кроме "есть графическая среда Graphics View Framework".
зы: s/QT/Qt/g Название: Re: Почему не меняется толщина круга? Отправлено: jojahti от Август 19, 2009, 10:20 boobsik
Ну создам я его там и что мне это даст? Блин, я нефига не понял чё это мне даст. ??? Если у меня объект класса renderarea создаётся и инициализируется изображением в конструкторе. Я смогу этот объект переинициализировать впоследствии? И как-то коряво выходит и слишком через ж. - заного сцену пересоздавать. Константин Цитировать все умозаключения предыдущего поста неверны...кроме "есть графическая среда Graphics View Framework". Тоесть для делфи существует очень мало учебников? Учебников по QT много больше чем по делфи? А пример из ассистента где столкновения/перекрывания/скорость/направление движения объектов обрабатывались только средствами Graphics View Framework мне почудился? ???Название: Re: Почему не меняется толщина круга? Отправлено: ритт от Август 19, 2009, 10:53 1. мне неинтересно пререкаться с тобой на данную тему. унас имеется прикреплённая ветка, в которой перечислено множество печатных и электронных изданий непосредственно по Qt. имеющий глаза...
2. в составе Qt поставляется отличная документация, заменяющая десятки толстых и умных книг типа "делфи для чайников" и т.п. 3. подобные вопросы уже ни один раз задавались на данном форуме - просто воспользуйся поиском. |