我在QHeaderView
子类中有一个QTreeView
子类,标题为代理提供了影响他们自己绘制方式的信息。标头接收控制这些值的鼠标事件。
我还希望我的委托编辑器小部件提供相同的功能,但不是复制和粘贴将鼠标值转换为标头可以使用的值的代码,我认为重新发送{{1在它上面。
所以我复制了该事件并将其发送(如docs中所述):
QMouseEvent
只有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 );
没有收到活动?
答案 0 :(得分:0)
似乎我的评论,在导致这种情况的父类中没有任何内容,一定是错的。作为一项实验,我在我的标题类中覆盖event(QEvent* event)
以手动调用鼠标处理程序,现在它完美运行:
bool Sy_timeLineHeader::event( QEvent* event )
{
switch ( event->type() ) {
case QEvent::MouseButtonPress:
mousePressEvent( static_cast< QMouseEvent* >( event ) ); break;
case QEvent::MouseButtonRelease:
mouseReleaseEvent( static_cast< QMouseEvent* >( event ) ); break;
case QEvent::MouseMove:
mouseMoveEvent( static_cast< QMouseEvent* >( event ) ); break;
default:
return QHeaderView::event( event );
}
return true;
}
它没有影响标题正常运行的方式,至少就我使用它的方式而言。