Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: QT. перемещение item с помощью мыши  (Прочитано 2051 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн katejim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Скажите пожалуйста, как перемещать элементы с помощью мыши?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: QT. перемещение item с помощью мыши
« Ответ #1 : 09 Мая 2012, 15:43:59 »
1) Наводишь указатель
2) Зажимаешь левую (если ты левша) кнопку мыши
3) Тащишь объект
...
PROFIT

Обработка событий мыши on_mouse_down on_mouse_move on_mouse_up. Как то так. погугли это просто

Оффлайн katejim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: QT. перемещение item с помощью мыши
« Ответ #2 : 09 Мая 2012, 16:12:49 »
а примерчик не подкините?

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: QT. перемещение item с помощью мыши
« Ответ #3 : 09 Мая 2012, 18:23:54 »
Какие элементы/виджеты хоть?
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Maestro79

  • Новичок
  • *
  • Сообщений: 10
  • UbuntuStudio 12.04
    • Просмотр профиля
Re: QT. перемещение item с помощью мыши
« Ответ #4 : 10 Мая 2012, 02:18:37 »
Item  - я так понимаю, это QGraphicsItem? Тогда:

MyItem.setFlag(QGraphicsItem::ItemIsMovable,true);

Также для самодельного QGraphicsItem нужно добавить немного кода в *.h(в Public секцию)

    QRectF boundingRect() const //возвращает габаритный прямоугольник  Item
    {
        return QRectF(-12, -12, 24, 24);
   
    }
    QPainterPath shape() const{ //возвращает форму  Item по которой и будем тыкать мышом
        QPainterPath path;
        path.addEllipse(-12, -12, 24, 24);
        return path;
    }

    enum {Type = UserType + 1};        //пользовательский тип, чтобы не конфликтовать со стандартными.
    int type () const { return Type; } // Для других своих Item добавляйте +2, +3, и т.д.

Это самодельный круг диаметром 24, хотя его проще сделать через QGraphicsEllipseItem.
В большинстве случаев удобны будут и остальные :  QGraphicsPathItem, QGraphicsPolygonItem, QGraphicsRectItem,  QGraphicsSimpleTextItem.
Для более сложных, динамических объектов наследуйтесь от QGraphicsItem и добавьте вышеприведенный код. Рисовать, как и всегда в переопределенном  paint

Оффлайн katejim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: QT. перемещение item с помощью мыши
« Ответ #5 : 10 Мая 2012, 19:10:15 »
спасибо большое!

 

Страница сгенерирована за 0.047 секунд. Запросов: 25.