crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Вопрос по QGraphicsScene и QWidget.
rokemoon
  опции профиля:
сообщение 22.2.2011, 0:39
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 22.2.2011
Пользователь №: 2427

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте.
У меня такой вопрос, в примерах по 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();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dovgon
  опции профиля:
сообщение 22.2.2011, 12:11
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 92
Регистрация: 5.1.2011
Пользователь №: 2325

Спасибо сказали: 3 раз(а)




Репутация:   0  


только чтонибуть в этом виде, проще не получится.
widgetItem->setParentItem(rectItem);

Иначе надо переопределить сигналы мышки для объекта кнопки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rokemoon
  опции профиля:
сообщение 22.2.2011, 22:56
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 22.2.2011
Пользователь №: 2427

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

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

Спасибо за совет.
Странно нигде не указано что для QWidget(и т.д.) надо что-то делать отдельное и setFlags(ItemIsMoved) не работает.
Ну да ладно, еще раз спасибо))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 20:03