Я понимаю, что система координат виджета локальна для виджета. 0,0 верхний левый.QWidget framing
Я хочу нарисовать рамку в виджетах, но с помощью QRect, возвращаемого rect(), приведет к тому, что справа и внизу не будут обрамлены.
Существует метод под названием «frameGeometry()», однако это возвращает QRect, который не находится в той же системе координат, что и виджет, но в системе соопределения родителей.
Есть ли способ получить прямоугольник рамки для виджета в локальной системе координат.
Я знаю, что могу перевести frameGeometry() или просто создать новый прямоугольник:
QRect(0, 0, width()-1, height()-1);
Является ли это правильное, что нужно сделать?
Благодарим вас, исследовав теперь, что есть методы, называемые contentsRect(), которые возвращают тот же прямоугольник, что и rect() и contentsMargins(), возвращаемые поля - все 0. – SPlatten
Когда вы читаете QRect для своего виджета, он должен иметь нижняя точка. Являются ли его координаты меньше, чем высота и ширина виджета или же то же самое? Кроме того, теперь я помню, что проблема с моими виджетами VCL была ... У них была ContentPane, у которой был меньший ограничивающий прямоугольник, чем сам виджет. У ваших виджетов есть что-то вроде этого, т. Е. Они панельные? Не знаю, о каком QWidget вы имеете в виду, поэтому я не могу сам это проверить. Mine был элементом VCL, соответствующим QPushButton. – starturtle
Вы совершенно правы, справа внизу находится 1 пиксельная вставка. – SPlatten