![]() |
|
|
![]()
|
|
| Ober |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.3.2011 Репутация: нет Всего: нет |
Извините за глупый вопрос, но ответ на него сам найти не могу. Можно ли в объекте класса, унаследованного от QMainWindow, установить полосы прокрутки и если можно, то как ?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Ober, можно. Для этого назначь QMdiArea как central widger и с ним разминайся
|
|||
|
||||
| Ober |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.3.2011 Репутация: нет Всего: нет |
Этот класс я пока еще не изучал. Может есть способ это сделать с помощью QScrollArea. У меня класс унаследованный от QMainWindow, располагает в себе меню QMenu, на нем же я провожу рисование с помощью QPaint, но рисунок получается слишком большим, и часть его не отображается в моем окне. Это сообщение отредактировал(а) Ober - 19.3.2012, 17:56 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Ober, ну воткни туда (setCentralWidget) нужного тебе наследника QWidget.
|
|||
|
||||
| Ober |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.3.2011 Репутация: нет Всего: нет |
Ок попробую. У меня другая проблема возникла )). Странная проблема, в режиме дебага программа все правильно вырисовывает, но в режиме релиза получается ерунда, посмотрите в файле пожалуйста. Как такое может быть ? Присоединённый файл ( Кол-во скачиваний: 9 )
Точечный_рисунок.JPG 197,68 Kb |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
скорее всего, где-то у тебя используются неинициализированные переменные.
|
|||
|
||||
| Ober |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.3.2011 Репутация: нет Всего: нет |
Нашел место, в котором возникает ошибка, но как ее устранить не могу понять. Вот фрагмент кода цикла for в котором переменная i возрастает от нуля до 31 и в дебаге программа входит во все условия поочередно, а в релизе не входит во второе и в третье, хотя они выполняются.
Это сообщение отредактировал(а) Ober - 20.3.2012, 22:18 |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
А что такое left?
|
|||
|
||||
| Ober |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.3.2011 Репутация: нет Всего: нет |
Left - это точка левого верхнего угла прямоугольника. Но если бы дело было в не корректно отрисовывались бы все прямоугольники, а так только те которые заданы вторым и третьим условиями. Изменение координат Left - это перемещение прямоугольников. В общем вот вся функция если есть желание можете просмотреть:
Это сообщение отредактировал(а) Ober - 20.3.2012, 22:43 |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
скажу сразу, мне код в принципе не нравится. так как очень много повторений, которые можно было бы сделать просто в цикле. Искать ошибки в таком коде сущее мучение.
|
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Как ты определил что программа в релизе не заходит в первое и второе условие? Она не может не заходить, там глупая логика.. она заходит а вот в нутри возникают проблемы.
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Я тоже не стал бы так делать.
1. Вместо того, чтобы переопределять paintEvent в MainWindow, я бы сделал это в классе производном от QWidget в вставил бы его в качестве centralWidget в MainWindow. Если нужны полосы прокрутки - дополнительно добавил бы QScrollArea. 2. Вызов setGeometry() внутри paintEvent() может привести к повторной перерисовке - лучше это сделать заранее, например, в конструкторе. 3. Возможно, topPoints и bottomPoints можно также вычислить заранее - paintEvent() желательно должен быть как можно проще, он вызывается всякий раз когда что-то нужно перерисовать (например, когда твоё окно откроется после закрытия другой программы) Тогда их можно будет вывести через qDebug() и проверить, что они заполняются правильно. |
|||
|
||||
| Ober |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.3.2011 Репутация: нет Всего: нет |
Да да, я уже разобрался, там действительно была проблема с логикой. Добавлено через 1 минуту и 22 секунды
Math спасибо, буду пробовать переделывать. |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |