Название: Рисование на форме из потока Отправлено: soalvi от Май 08, 2010, 07:27 Для рисования на форме приложения используется метод ::paintEvent(QPaintEvent*) - из других мест отрисовки не получается :( Как можно рисовать на форме из потока, используя QPainter или какой-нибудь другой путь?
Название: Re: Рисование на форме из потока Отправлено: marbius от Май 08, 2010, 08:37 В Qt не получится рисовать вне paintEvent без установки Qt::WA_PaintOutsidePaintEvent.
Цитировать Qt::WA_PaintOutsidePaintEvent Makes it possible to use QPainter to paint on the widget outside paintEvent(). This flag is not supported on Windows, Mac OS X or Embedded Linux. We recommend that you use it only when porting Qt 3 code to Qt 4. Как вариант можно рисовать на QPixmap, в необходимом месте вызывать QWidget::update(), который инициирует вызов paintEvent, а в paintEvent уже выводить содержимое QPixmap (самому очень не нравится такой подход, но похоже, что это единственное решение, которое вписывается в концепцию кроссплатформенного программирования Qt) Название: Re: Рисование на форме из потока Отправлено: Sancho_s_rancho от Май 08, 2010, 09:59 1) Вы не должны хотеть рисовать на виджете вне PaintEvent().
2) Создавать QPixmap или QImage или что-то еще подобное вы можете где угодно. Где угодно на них вы можете "рисовать" что угодно. Например: в другом потоке перерисовывать сложный график на QPixmap. 3) Рисовать на виджете вы должны в главном потоке. Но если вы в соседнем все вычислили и нанесли на QPixmap, то в paintEvente вам остается только сказать: рисовальщик, нарисуй готовую пиксельную карту. Название: Re: Рисование на форме из потока Отправлено: lit-uriy от Май 08, 2010, 11:09 QImage специально заточен для рисования на нём в любом потоке.
Название: Re: Рисование на форме из потока Отправлено: soalvi от Май 12, 2010, 22:11 Простой вызов QWidget::update() результата не даёт!
Может кто нибудь приведёт пример вызова метода ::paintEvent(QPaintEvent*)? Или разъяснит немного подробнее механизм вызова? Название: Re: Рисование на форме из потока Отправлено: Sancho_s_rancho от Май 13, 2010, 10:29 Простой вызов QWidget::update() результата не даёт! В каталоге examples Qt лежит целая куча примеров, где происходит рисование на виджете. update() все необходимые результаты дает.Может кто нибудь приведёт пример вызова метода ::paintEvent(QPaintEvent*)? Или разъяснит немного подробнее механизм вызова? Название: Re: Рисование на форме из потока Отправлено: ритт от Май 15, 2010, 17:11 я год не заглядывал в данный раздел, а заглянув, увидел те же темы, что неоднократно обсасывались ранее.
товарищи топикстартеры, вы что, дебилы?! неужели поиск интересующего материала по форуму займёт больше времени и/или усилий, чем выдумывание проблемы, описание её, ожидание ответов, переспрашивание и уточнение и др., и пр.? или вы всё-таки дебилы? Название: Re: Рисование на форме из потока Отправлено: Igors от Май 15, 2010, 19:47 или вы всё-таки дебилы? Это не работает. Чем меньше Вы покажете своих субъективных эмоций - тем лучше $. Не давайте никому повода кричать "меня оскорбили!!!". Спокойно, корректно и кратко изложите почему нитка будет удалена и/или автор будет забанен, это несложно. Название: Re: Рисование на форме из потока Отправлено: ритт от Май 15, 2010, 21:39 ветка не будет удалена и автор не будет забанен - нет причин.
лучше пусть докажет мне и себе, что я ошибаюсь... Название: Re: Рисование на форме из потока Отправлено: marbius от Май 16, 2010, 06:43 Вот Вам, уважаемый, небольшой пример.
Написан на скорую руку (причем одну и левую ;) ), не без изъянов, но работоспособный. Код: #include <QtGui> Название: Re: Рисование на форме из потока Отправлено: marbius от Май 16, 2010, 10:19 или вы всё-таки дебилы? Это не работает. Чем меньше Вы покажете своих субъективных эмоций - тем лучше $. Не давайте никому повода кричать "меня оскорбили!!!". Спокойно, корректно и кратко изложите почему нитка будет удалена и/или автор будет забанен, это несложно. Зря Вы так, Igors. Админу дозволено все (по определению): на то он и власть, и правосудие... |