LINUX.ORG.RU

[Plasma][Qt]

 ,


0

0

Пишу плазмоид, для всплывающего окна использую Plasma::Dialog. Он унаследован от QWidget. В классе QWidget есть метод setLayout(QLayout). Мне нужно использовать в этом окошке Plasma::IconWidget, который унаследован от QGraphicsWidget. Проблема вот в чём: при попытке сделать layout.addItem(iconWidget) естественно выскакивает ошибка - IconWidget унаследован от QGraphicsWidget и не может быть добавлен на QLayout (так как не является потомком QLayoutItem).

Если же использовать QGraphicsLinearLayout, как лэйаут, то при попытке dialog.setLayout(layout) тоже возникает ошибка - QGraphicsLinearLayout не может быть установлен как лэйаут, так как Plasma::Dialog не QGraphicsWidget, а просто QWidget.

Итак, как быть? Как на диалог добавить наследника QGraphicsWidget? Или подскажите какую-нибудь замену Dialog'у.


оффтоп.

Так почитаешь опенсорсный форум, столько людей кинулось писать на Qt, неужто LGPL так повлияла? :)

zJes ★★
()
Ответ на: комментарий от memnek

По теме, antony986 хотел сказать что можно сделать так.

vl = new QVBoxLayout(MyDialog);
view = new QGraphicsView(MyDialog);
vl->addWidget(view);

QRect bounds(0,0,width, height);
scene = new QGraphicsScene(bounds, MyDialog);
view->setScene(scene);

в эту сцену добавляешь свои графические итемы.

zJes ★★
()
Ответ на: комментарий от memnek

QGraphicsView наследник qwidget, его и пихаешь в свой лэйаут

IconWidget т.е. QGraphicsWidget - наследник QGraphicsItem, его пихаешь в QGraphicsScene через addItem

а потом setScene и отдаешь QGraphicsView нашу сцену http://qt.nokia.com/doc/4.6/qgraphicsview.html#setScene

а вообще вотъ - http://doc.trolltech.com/4.6/graphicsview.html

З.Ы. а вот как этим рулить внутри сцены - разберешься сам

antony986
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.