crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Вопрос по QGraphicsScene и QWidget.
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
rokemoon Дата 22.2.2011, 22:56
 
Цитата(Dovgon @ 22.2.2011, 12:11) *
только чтонибуть в этом виде, проще не получится.
widgetItem->setParentItem(rectItem);

Иначе надо переопределить сигналы мышки для объекта кнопки.

Спасибо за совет.
Странно нигде не указано что для QWidget(и т.д.) надо что-то делать отдельное и setFlags(ItemIsMoved) не работает.
Ну да ладно, еще раз спасибо))
Dovgon Дата 22.2.2011, 12:11
  только чтонибуть в этом виде, проще не получится.
widgetItem->setParentItem(rectItem);

Иначе надо переопределить сигналы мышки для объекта кнопки.
rokemoon Дата 22.2.2011, 0:39
  Здравствуйте.
У меня такой вопрос, в примерах по QGraphicsView и QGraphicsScene, если для QGraphicsItem поставить флаг ItemIsMoved то они прекрасно передвигаются мышью, а если добавить например кнопку в QGraphicsScene и выставить ей этот флаг кнопка не передвигается (пробовал еще QLabel, тоже не сдвигается), ну и сам вопрос что нужно сделать чтобы кнопка двигалась по сцене? И есть ли решение без наследования, а как для обычных QGraphicsItem поставил флаг и все ок?
Вот сам пример:
#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGraphicsScene scene(QRectF(-100, -100, 300, 300));
    QGraphicsView view(&scene);

    QGraphicsRectItem* rectItem = new QGraphicsRectItem(0, &scene);
    rectItem->setPen(QPen(Qt::black));
    rectItem->setBrush(QBrush(Qt::green));
    rectItem->setRect(QRectF(-30, -30, 120, 80));
    rectItem->setFlags(QGraphicsItem::ItemIsMovable);

    QGraphicsTextItem* textItem = scene.addText("Move us with your mouse");
    textItem->setDefaultTextColor(Qt::red);
    textItem->setFlags(QGraphicsItem::ItemIsMovable);

    QPushButton* button = new QPushButton("Ok");
    QGraphicsProxyWidget* widgetItem = scene.addWidget(button);
    widgetItem->setPos(0, 0);
    widgetItem->setFlags(QGraphicsItem::ItemIsMovable);

    QLabel* lbl = new QLabel("Label");
    QGraphicsProxyWidget* labelItem = scene.addWidget(lbl);
    labelItem->setPos(30, 30);
    labelItem->setFlag(QGraphicsItem::ItemIsMovable, true);

    view.show();

    return a.exec();
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 31.5.2024, 10:28