と があり、QGraphicsView
有効QGraphicsScene
にしました
this->setDragMode(QGraphicsView::RubberBandDrag);
ラバーバンド選択用。ただし、私のアプリケーションでは、CTRL キーを押してからマウスを動かしてラバーバンドの選択を開始する必要があるのは理にかなっています。独自の QRubberBand を作成せずにこれを達成できますか? そうでない場合、どうすれば再実装できますか?
と があり、QGraphicsView
有効QGraphicsScene
にしました
this->setDragMode(QGraphicsView::RubberBandDrag);
ラバーバンド選択用。ただし、私のアプリケーションでは、CTRL キーを押してからマウスを動かしてラバーバンドの選択を開始する必要があるのは理にかなっています。独自の QRubberBand を作成せずにこれを達成できますか? そうでない場合、どうすれば再実装できますか?
QMainWindow
and Sceneを含むa と言う場合、QGraphicsView
これを行う 1 つの方法は、次のように QMainWindowのkeyPressEvent
andメソッドをオーバーロードすることです。keyReleaseEvent
void MyMainWindow::keyPressEvent( QKeyEvent * event )
{
if( event->key() == Qt::Key_Control ) {
graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
}
QMainWindow::keyPressEvent(event);
}
void MyMainWindow::keyReleaseEvent( QKeyEvent * event )
{
if( event->key() == Qt::Key_Control ) {
graphicsView->setDragMode(QGraphicsView::NoDrag);
}
QMainWindow::keyReleaseEvent(event);
}
RubberBandDrag
これにより、CTRL が押されている限り、選択モードが に設定されます。キーを再度離すと、ドラッグ モードがデフォルトに戻り、NoDrag
選択は実行されません。どちらの場合も、イベントは QMainWindow 基本クラスの実装にも転送されます。これは、関連する場合と関連しない場合があります。