これを達成する方法はたくさんあると思います。QLabel のサブクラスを持ち、QPainter を使用してフレームをペイントするカスタム QWidget 上にビデオ ストリームが表示されるアプリケーションがあります。それを考えると、ユーザーが画像上で長方形をドラッグして座標を取得できるようにすることは可能ですか? 要件は、ドラッグ中に四角形が表示されている必要があることです。
前もって感謝します、
QRubberBandを見てください。このような四角形を QLabel などの上に配置できます。ドキュメントには、マウスを使用してラバーバンドを移動およびサイズ変更する方法の例も含まれています。
ウィジェットでは、マウスの押されたイベントと離されたイベントを追跡し、ウィジェット上の選択範囲の角がどこにあるかを追跡できます。長方形を描くには、 を見てみましょうQStyle::drawFocusRect
。その意図は、背後にあるものに関係なく見ることができる四角形を描くことだと思います。
または、おそらくこれを試してください:
QStylePainter painter(this);
QStyleOptionFocusRect option;
option.initFrom(this);
option.backgroundColor = palette().color(QPalette::Background);
painter.drawPrimitive(QStyle::PE_FrameFocusRect, option);
はQGraphicsView
ありますが、同様の機能があるかvoid setRubberBandSelectionMode ( Qt::ItemSelectionMode mode )
どうかはわかりません...QLabel
ユーザーが長方形をドラッグしてマウスリリースでキャッチしている間に、独自の長方形を描画する必要があるかもしれません
スーロン ザイ