проблема с рисованием |
Здравствуйте, гость ( Вход | Регистрация )
проблема с рисованием |
narik1985 |
21.5.2009, 2:17
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 14.4.2009 Пользователь №: 681 Спасибо сказали: 0 раз(а) Репутация: 0 |
доброй ночи всем.
При запуске выдает: QPainter::begin: Widget painting can only begin as a result of a paintEvent вопросы: почему если я вызываю в программе событие Paint он не рисует? а если программа сама генерирует событие то выводится все нормально? |
|
|
Litkevich Yuriy |
21.5.2009, 3:19
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
возможно это из-за того, что ты пытешся послать событие до запуска цикла обработки события (т.е. до app.exec())
|
|
|
narik1985 |
21.5.2009, 20:43
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 14.4.2009 Пользователь №: 681 Спасибо сказали: 0 раз(а) Репутация: 0 |
возможно это из-за того, что ты пытешся послать событие до запуска цикла обработки события (т.е. до app.exec()) пробывал поднимать app.exec() на не сколько строчек вверх, код создания события выполняется только после закрытия окна, я что-то не так делаю? и еще вопрос, в класс CodeEdit добавил функию keyPressEvent(QKeyEvent)
Как я понимаю при нажатии кнопки клавиатуры, должно вызываться событие Paint и выполнятся вызов функции paintEvent, но прорисовки не выполняется, выводит все то же самое сообщение QPainter::begin: Widget painting can only begin as a result of a paintEvent
Причина редактирования: используй тэг code
|
|
|
Litkevich Yuriy |
21.5.2009, 20:49
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
пробывал поднимать app.exec() на не сколько строчек вверх, это без смысленно.т.к. приложение в принципе будет выполнятся в это функции, т.е. то что после нёё будет выполнено, когда будет завершаться приложение. Лучше из main'а вообще убери посылку сообщений. Как я понимаю при нажатии кнопки клавиатуры, должно вызываться событие Paint и выполнятся вызов функции paintEvent, но прорисовки не выполняется, выводит все то же самое сообщение а при изменении размера виджета, рисование происходит?
|
|
|
narik1985 |
21.5.2009, 20:51
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 14.4.2009 Пользователь №: 681 Спасибо сказали: 0 раз(а) Репутация: 0 |
при изменении размера происходит, при перетаскивании нет
|
|
|
Litkevich Yuriy |
21.5.2009, 20:54
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
события посылать я не пробовал, незнаю точно как это делается.
Но для проверки события кнопок (KeyPressEvent), можно вместо посылки сообщения (sendEvent) вызвать метод paint() |
|
|
igor_bogomolov |
21.5.2009, 20:59
Сообщение
#7
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
narik1985 |
21.5.2009, 21:05
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 14.4.2009 Пользователь №: 681 Спасибо сказали: 0 раз(а) Репутация: 0 |
события посылать я не пробовал, незнаю точно как это делается. Но для проверки события кнопок (KeyPressEvent), можно вместо посылки сообщения (sendEvent) вызвать метод paint() Я использую qDebug() с выводом сообщения для каждого события, они на экран выводятся(то есть при нажатии кнопки выводит сообщение о нажатой кнопке, а потом сообщение о прорисовке) Как использовать метод paint() не подскажешь? С Update() все получается, но в чем именно я не прав? |
|
|
igor_bogomolov |
21.5.2009, 21:46
Сообщение
#9
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
narik1985 |
21.5.2009, 22:00
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 14.4.2009 Пользователь №: 681 Спасибо сказали: 0 раз(а) Репутация: 0 |
С Update() все получается, но в чем именно я не прав? Про что вопрос? Как сэмулировать событие рисования?
Не вопрос в другом, почем когда я событие из события вызываю, то он не отрисовывает, в то время когда приложение само вызывает, то отрисовка проходит, что я конкретно не правильно делаю... (как мне кажется работать же должно) |
|
|
Текстовая версия | Сейчас: 29.11.2024, 1:29 |