Перетащите прямоугольник на изображение в Qt

Я думаю, что есть много способов достичь этого. У меня есть приложение, в котором видеопоток отображается через пользовательский QWidget, который у меня есть подклассы из QLabel, и рисование кадров с использованием QPainter. Учитывая это, возможно ли позволить пользователю перетащить прямоугольник над изображением и получить координаты? Требование состоит в том, что прямоугольник должен быть виден во время перетаскивания.

Заранее спасибо,

0

Решение

QGraphicsView имеет void setRubberBandSelectionMode ( Qt::ItemSelectionMode mode ) но я не знаю, если QLabel имеет похожую особенность …

возможно, вам нужно нарисовать собственный прямоугольник, пока пользователь перетаскивает прямоугольник и ловит его на отпускание мыши

так долго, зай

1

Другие решения

В вашем виджете вы можете отслеживать нажатие и отпускание мыши и отслеживать, где на виджете находятся углы прямоугольника выделения. Для рисования прямоугольника я бы взглянул на QStyle::drawFocusRect, Я думаю, что цель этого состоит в том, чтобы нарисовать прямоугольник, который вы сможете увидеть независимо от того, что стоит за ним.

Или, возможно, попробуйте это:

QStylePainter painter(this);
QStyleOptionFocusRect option;
option.initFrom(this);
option.backgroundColor = palette().color(QPalette::Background);
painter.drawPrimitive(QStyle::PE_FrameFocusRect, option);
1

Посмотри на QRubberBand. Это позволяет вам разместить такой прямоугольник поверх, например, QLabel. В документации также приведен пример перемещения и изменения размера резиновой ленты с помощью мыши.

1
По вопросам рекламы [email protected]