[РЕШЕНО] Отрисовка QPainter'ом на QPixmap'e |
Здравствуйте, гость ( Вход | Регистрация )
[РЕШЕНО] Отрисовка QPainter'ом на QPixmap'e |
Andrewshkovskii |
7.12.2009, 17:19
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Хочу нарисовать сеточку на пиксмапе, вот такой вот код :
Ну и получается ровно ничего. какой-то косят с утсновкой PaintDevice в конструкторе painter'а ? Сообщение отредактировал Andrewshkovskii - 7.12.2009, 18:20 |
|
|
SABROG |
7.12.2009, 17:32
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Хочу нарисовать сеточку на пиксмапе, вот такой вот код :
А ты суров
За раз можно использовать только один QPainter. Нарисовал - закрыл/уничтожил, создал новый и нарисовал что-то еще - закрыл/уничтожил. |
|
|
Andrewshkovskii |
7.12.2009, 17:35
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Ну просто лень было объявлять выше, пусть с кучи тащит...
Закрывать через end()? В прочем, всеравно не чиркает :
Может потому что, после конструктора вызывается paintEvent, и стираем все мои старанья? Сообщение отредактировал Andrewshkovskii - 7.12.2009, 17:39 |
|
|
SABROG |
7.12.2009, 17:46
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
Litkevich Yuriy |
7.12.2009, 17:46
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Andrewshkovskii, рисовать можно только в paintEvent, в Асистенте же написано
|
|
|
Andrewshkovskii |
7.12.2009, 17:55
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Может потому что, после конструктора вызывается paintEvent, и стираем все мои старанья? Только в том случае, если ты переопределил paintEvent и там стираешь сам. Смотри чего в консоль пишется (CONFIG += console в .pro файл добавить надо) Я в криэйтере пишу, там все сообщения и так валяться в консоль вывода... Цитата Andrewshkovskii, рисовать можно только в paintEvent, в Асистенте же написано Переписали.. результат =0 :/ я не понимаю, может он не может на девайсе пиксмапа рисовать?
Из конструктора убрал this->clearPixmaps();... |
|
|
SABROG |
7.12.2009, 18:01
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
рисовать можно только в paintEvent, в Асистенте же написано Так это только если QPaintDevice - QWidget. У меня как-то были проблемы с отрисовкой на QPixmap и тогда все рисовалось нормально на QImage, но потом у меня получилось рисовать и на QPixmap, не знаю что тогда изменилось. |
|
|
Andrewshkovskii |
7.12.2009, 18:05
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
рисовать можно только в paintEvent, в Асистенте же написано Так это только если QPaintDevice - QWidget. У меня как-то были проблемы с отрисовкой на QPixmap и тогда все рисовалось нормально на QImage, но потом у меня получилось рисовать и на QPixmap, не знаю что тогда изменилось. Сейчас попробую потанцевать с QImage, нарисовать на нем, а потом уж "вставить" его в пиксмап.. |
|
|
SABROG |
7.12.2009, 18:09
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Всё, память ко мне вернулась.
Если точный размер картинки не выставлять, то получишь такое в консоли:
Вот здесь косяк скорее всего:
В конструкторе главного окна виджеты еще не инициализированы и их размер может быть нулевым. Тебе нужно поймать момент, когда все окна уже отображаются и работает главный цикл. Сделать это можно через QTimer::singleShot(). Ну или жестко задать начальные размеры. Сообщение отредактировал SABROG - 7.12.2009, 18:13 |
|
|
Andrewshkovskii |
7.12.2009, 18:17
Сообщение
#10
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Спасибо.. решено вот так :
Размеру жестко заданы в ui-шке.. Сообщение отредактировал Andrewshkovskii - 7.12.2009, 18:20 |
|
|
Текстовая версия | Сейчас: 23.12.2024, 0:07 |