나는 을 찾기 위해 많은 시간을 보냈는데 실제로은 Qt에서 사용자 상호 작용을 방지하고 이벤트 필터링이 수용 가능한 해결책 인 것처럼 보입니다. 여기
예 : 당신은 무엇을 잠글 수있는 그런
class AppFilter : public QObject
{
protected:
bool eventFilter(QObject *obj, QEvent *event);
};
bool AppFilter::eventFilter(QObject *obj, QEvent *event)
{
switch (event->type())
{
//list event you want to prevent here ...
case QEvent::KeyPress:
case QEvent::KeyRelease:
case QEvent::MouseButtonRelease:
case QEvent::MouseButtonPress:
case QEvent::MouseButtonDblClick:
//...
return true;
}
return QObject::eventFilter(obj, event);
}
:
qapp->setOverrideCursor(Qt::WaitCursor);
qapp->installEventFilter(filter);
그리고 잠금을 해제 :
이
while(qapp->overrideCursor()) //be careful application may have been lock several times ...
qapp->restoreOverrideCursor();
qapp->removeEventFilter(filter);
processEvents 당신이 Quit-를받을 특히, 까다로운 일이 될 수 있습니다 processEvents 내의 알림. 마우스 이벤트와 함께 키보드 이벤트도 필터링됩니다. 따라서 응용 프로그램을 닫을 수도 있습니다. – Jens
더 긴 작업을 중단하는 것은 실제로 문제입니다. 원하는 경우 자체 이벤트 루프가 유일한 가능성 일 것입니다. –