2011-03-28 5 views
1

사용자가 QListWidget을 두 번 클릭하면 무언가를 수행하려는 대화 상자 (예 : QFileDialog 창 열기)에 QListWidget이 있습니다. 불행히도 void doubleClicked (const QModelIndex & index)은 목록에 항목이있을 때만 실행됩니다.QListWidget 항목이없는 doubleClicked 신호 보내기

위젯 내에서 더블 클릭 이벤트가 수신 될 때마다 신호를 보내도록 위젯을 가져올 수 있습니까? 또는 다른 접근법이 필요합니까?

답변

5

당신 수있는 listwidget의 뷰포트 위젯, 이런 일에 install an event filter 다음 QEvent::MouseButtonDblClick 이벤트의 eventFilter 방법 검사에서

listWidget->viewport()->installEventFilter(this); // "this" could be your window object. 

:

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); 
    } 
} 

도움이 되었기를 바랍니다.

+0

고마워요. 여러 QListWidgets를 확인한 이후로 추가하고 싶습니다. 또한 obj를 확인해야했습니다. 그러나 이벤트를 생성하는 것은 QListWiget의 뷰포트이므로 두 번 클릭 한 항목을 찾으려면 QListWidget에 대해 obj-> parent()를 확인해야합니다. –

관련 문제