преобразованный QWidget не отрисовывается на форме |
Здравствуйте, гость ( Вход | Регистрация )
преобразованный QWidget не отрисовывается на форме |
efg |
7.5.2011, 9:34
Сообщение
#1
|
Студент Группа: Участник Сообщений: 48 Регистрация: 6.5.2011 Пользователь №: 2658 Спасибо сказали: 2 раз(а) Репутация: 0 |
буквально: написал свой виджет (унаследовал от QWidget), который генерирует лабиринты. если создавать и показывать его - нормально работает. если добавить на форму QWidget и преобразовать в мой класс, нифига не отрисовывается, форма пустая. из-за чего подобное может происходить?
|
|
|
Litkevich Yuriy |
7.5.2011, 13:29
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
efg |
7.5.2011, 22:19
Сообщение
#3
|
Студент Группа: Участник Сообщений: 48 Регистрация: 6.5.2011 Пользователь №: 2658 Спасибо сказали: 2 раз(а) Репутация: 0 |
в компоновщике тоже нормально работает? не-а, пустота
размеры окна устанавливаются правильно; если создавать QMainWindow* window, то окно произвольного размера кажет только так:
|
|
|
Litkevich Yuriy |
8.5.2011, 8:10
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
efg |
8.5.2011, 15:11
Сообщение
#5
|
Студент Группа: Участник Сообщений: 48 Регистрация: 6.5.2011 Пользователь №: 2658 Спасибо сказали: 2 раз(а) Репутация: 0 |
Переопределил sizeHint():
Переопределил minimumSizeHint():
В конструкторе вызвал setSizePolicy():
и на всякий случай updateGeometry(); только вот ничего не изменилось |
|
|
Litkevich Yuriy |
8.5.2011, 21:41
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Если переопределял paintEvent(), то для теста закоментируй в нём всё и первой же строчкой вызови метод базового класса.
Что при этом получишь? П.С. Пока тестируй свой виджет на простейшем коде:
|
|
|
efg |
8.5.2011, 22:01
Сообщение
#7
|
Студент Группа: Участник Сообщений: 48 Регистрация: 6.5.2011 Пользователь №: 2658 Спасибо сказали: 2 раз(а) Репутация: 0 |
|
|
|
Litkevich Yuriy |
8.5.2011, 22:11
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
efg |
8.5.2011, 22:53
Сообщение
#9
|
Студент Группа: Участник Сообщений: 48 Регистрация: 6.5.2011 Пользователь №: 2658 Спасибо сказали: 2 раз(а) Репутация: 0 |
this->QWidget::repaint(); приводит к рекурсии вобще не то.
..\qmaze\mazegame.cpp: In member function 'virtual void mazegame::paintEvent(QPaintEvent*)': ..\qmaze\mazegame.cpp:94: error: no matching function for call to 'mazegame::paintEvent()' |
|
|
Litkevich Yuriy |
9.5.2011, 6:50
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
efg, приведи код paintEvent(), который у тебя получился в конечном итоге, что-то ты делаешь не то, что я тебе говорю.
у тебя должно было получится так:
|
|
|
Текстовая версия | Сейчас: 14.1.2025, 21:54 |