2014-10-13 4 views
4

다음과 같은 위젯 구조가 있습니다. CDockWidgetInfoBarQDockWidget의 스플리터 커서 비활성화

Widget structure

나는 QDockWidget (CDockWidgetInfoBar)를 통해 이동, 나는이 분할 커서를 참조 단지 QDockWidget 파생 클래스입니다. Resize cursor

어디서 오는 것입니까? 사용 중지 할 수 있습니까? 그것은 QDockWidgetLayout의 일부입니까? 그러나 QDockWidgetLayoutQt private이며 사용하지 않아야합니다.

아이디어가 있으십니까?

+0

Btw,이 커서는 어떻게 호출됩니까? 커서 크기 조정, 분할 커서? –

답변

1

시스템에서는 불가능하거나 극도로 고통 스럽습니다.

나는 내가 여기에이 그랬던 것처럼이 작업을 수행하려고 : How can I prevent transform cursor to SplitHCursor when it's under border between QHeaderView sections

을하지만 QEvent::Enter 이벤트가 발생하기 전에 커서 크기를 조정 주요 문제가 나타납니다. (다음 코드를 실행하면 크기 조정 커서가 먼저 표시되지만 "추가"단어는 표시되지 않음). 내가 아는 한 위젯의 가장자리 가까이로 이동할 때 커서를 잡을 수있는 이벤트가 없습니다. 따라서이 사건을 포착하는 것은 매우 어렵습니다. 다른 방법이 있습니다. mouseMoveEvent에서 매번 check는 dock 위젯 근처의 커서입니다. 그러나 나는 그것이 매우 비효율적이라고 생각합니다.

는이 코드 작성 :

if (obj == ui->dockWidget && event->type() == QEvent::Enter) 
{ 
    qApp->setOverrideCursor(QCursor(Qt::ArrowCursor)); 
    qDebug() << "added"; 
} 
if (obj == ui->dockWidget && event->type() == QEvent::Leave) 
{ 
    qApp->restoreOverrideCursor(); 
} 

을하지만 사용자가 독을 떠 시도한 후 정말 작동합니다.

나는 그것이 완전한 대답이 아니라는 것을 알고 있지만 어쩌면 도움이되거나 매우 어렵다는 것을 증명할 수 있습니다. 어쨌든, 누군가가이 문제의 효율적인 해결책을 발견한다면, 그것은 매우 훌륭 할 것입니다.