ユーザーが QListWidget をダブルクリックしたときに、何かをしたい (たとえば、QFileDialog ウィンドウを開く) ダイアログに QListWidget があります。残念ながら、void doubleClicked (const QModelIndex & index)
リストに項目がある場合にのみ起動します。
ウィジェット内のどこでも、ダブルクリック イベントが受信されるたびに、ウィジェットが信号を発するようにすることは可能ですか? それとも別のアプローチが必要ですか?
ユーザーが QListWidget をダブルクリックしたときに、何かをしたい (たとえば、QFileDialog ウィンドウを開く) ダイアログに QListWidget があります。残念ながら、void doubleClicked (const QModelIndex & index)
リストに項目がある場合にのみ起動します。
ウィジェット内のどこでも、ダブルクリック イベントが受信されるたびに、ウィジェットが信号を発するようにすることは可能ですか? それとも別のアプローチが必要ですか?
次のように、listwidget のビューポート ウィジェットにイベント フィルターをインストールできます。
listWidget->viewport()->installEventFilter(this); // "this" could be your window object.
eventFilter メソッドで、QEvent::MouseButtonDblClick
イベントを確認します。
bool YourWindowClass::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::MouseButtonDblClick)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
qDebug("Mouse double click %d %d", mouseEvent->x(), mouseEvent->y());
return true;
}
else
{
return QMainWindow::eventFilter(obj, event);
}
}
これが役立つことを願っています。