QTreeView
하위 클래스에 QHeaderView
하위 클래스가 있고이 헤더는 대리인에게 정보를 제공하여 자신을 페인트하는 방법에 영향을줍니다. 헤더는 이러한 값을 제어하는 마우스 이벤트를 수신합니다.보낸 이벤트가 무시되었습니다.
위젯 편집기 위젯이 동일한 기능을 제공하기를 원했지만 마우스 값을 헤더에서 사용할 수있는 값으로 변환하는 코드를 복사하여 붙여 넣기보다는 QMouseEvent
을 다시 보내는 것이 더 쉽다고 생각했습니다. 그것.
그래서 나는 이벤트를 복사합니다 (docs에서 언급 한 바와 같이) 그것을 보내
QMouseEvent e(event->type(), event->pos(), event->button(),
event->buttons(), event->modifiers());
Sy_application::sendEvent(&header_, &e);
만 header_
결코를받지 않습니다.
QMouseEvent* e = new QMouseEvent(QEvent::MouseButtonPress, event->pos(),
event->button(), event->buttons(),
event->modifiers());
Sy_application::postEvent(&header_, e);
왜 header_
가 이벤트를 수신하지 않고 : 이벤트를 게시하는 것은 같은 효과가 있습니다?
이것은 [이벤트 필터링] (http://qt-project.org/doc/qt-4.8/eventsandfilters.html#event-filters)으로 인한 것일 수 있지만 그저 추측 일뿐입니다 ... – tmpearce
I haven ' 설치되어 있지 않습니다. 'sendEvent (....)'가 true를 반환하면 _something_이 처리하고 있음을 의미합니다. 'QHeaderView' 소스 코드를 살펴보고 내장 소스 코드가 있는지 살펴 보겠습니다. – cmannett85
@tmpearce 아니,이 동작을 일으키는 것처럼 보이는'QHeaderView' 또는'QAbstractItemView :: event (QEvent * e)'소스 코드에는 아무것도 없습니다. – cmannett85