crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 15:54