2015-06-30 4 views
1

Я создал QWidget с большим количеством детских виджетов. Чтобы посмотреть всю картину, я хочу масштабировать QWidget. Затем масштабируйте его. Однако QWidget не имеет интерфейса scale.PyQt4: Как масштабировать QWidget?

QGraphicsView имеет интерфейс scale, поэтому я попытался поместить QWidget в QGraphicsView. Масштаб работает, однако очень тяжело делать перетаскивание & падение в QGraphicsView (есть около question на stackoverflow об этом).

Так есть ли еще способ масштабирования QWidget?

+0

Есть ли причина, по которой вы не можете использовать механизм макетов для масштабирования виджетов и просто установить размер для mainWindow? Или вам нужно изменить масштаб контента? – Mailerdaimon

+0

@Mailerdaimon Мне нужно изменить масштаб контента. Также потому, что мне нужно разместить дочерние виджеты в абсолютных позициях, поэтому я не использовал макет. – kkpattern

+0

вы можете использовать [qApp :: allWidgets] (http://doc.qt.io/qt-4.8/qapplication.html#allWidgets) и изменить размер всех виджетов. Затем вам нужно будет вручную регулировать размеры контента, что также громоздко. – Mailerdaimon

ответ

0

В Qt нет явной поддержки такой функциональности. Решения, один из которых вы обнаружили, являются:

  1. Вставить родительский QWidget в QGraphicsWidget, а затем просмотреть его на сцене. Перетаскивание осуществляется по адресу here.

  2. Вручную render() виджет в виде виджета paintEvent. Вам придется пересылать все события визуализируемому виджету после применения масштабирования к любым координатам и при сохранении необходимых инвариантов. Виджет вида должен будет действовать снаружи, как если бы это был видный виджет, кроме изменения масштаба. Это позаботится о перетаскивании & drop.

Смежные вопросы