Название: Рисование QPainter и форма .ui главного окна Отправлено: PinkPanther от Июнь 30, 2020, 19:02 Здравствуйте.
В программе имеется форма главного окна, там масса виджетов - таб бар, в каждой вкладке кнопки, поля, чекбоксы и прочее... Все это богатство было на скорую руку создано в Qt Creator-е. Возникла необходимость разместить в одной из вкладок объект рисования - линии, прямоугольники и все такое прочее... Был создан класс Keyboard, дочерний от QWidget, в котором был переопределен метод paintEvent. Объект был создан вручную, в конструкторе MainWindow, а в ui такого объекта нет. Если сделать его centralWidget, все работает и рисуется. Когда запихиваю в один из лейаутов формы, виджета на экране нет и обращений к его paintEvent не происходит. Код: // keyboard.cpp Вопрос 1: В чем загвоздка?! (Давным-давно писал программу с рисованием и все работало, но исходников не осталось) Вопрос 2: Как добавить потомка QWidget (с переопределенным обработчиком события рисования) в форму .ui? Вопрос 3: В одну из QLabel (элемент формы .ui) из файла ресурсов подгружается картинка .jpg, в том же конструкторе MainWindow. Картинка грузится прекрасно. Было бы неплохо дорисовать кое-что поверх картинки, но не меняя исходное изображение. То есть по умолчанию пользователь видит оригинальную картинку, время от времени - по мере его действий - на картинке появляются стрелки, фигуры и надписи, а потом исчезают. В потомке QLabel тоже будет переопределен метод обработчика paintEvent, и в зависимости от состояния свойств либо что-то будет дорисовываться, либо не будет. Как сделать так, чтобы картинка не перекрывала рисование и как производный ่от QLabel объект добавить в форму .ui? Название: Re: Рисование QPainter и форма .ui главного окна Отправлено: kambala от Июнь 30, 2020, 22:41 1. а этот виджет хотя бы отображается?
2. правой кнопкой на добавленный виджет — promote to — вписать свой класс 3. можно повесить виджет поверх лейбла и в нем рисовать Название: Re: Рисование QPainter и форма .ui главного окна Отправлено: PinkPanther от Июль 01, 2020, 11:29 1. а этот виджет хотя бы отображается? 2. правой кнопкой на добавленный виджет — promote to — вписать свой класс 3. можно повесить виджет поверх лейбла и в нем рисовать Заработало. Оказывается, в layout-е виджет попадал в слепую зону, уползал за пределы окна. Мысль наложить область поверх картинки отличная. Унаследовал от QLabel, задал геометрию картинки, очень удобно. Спасибо! |