0

我想将一个事件转移给一个小部件的孩子。我当前的实现是(_tableQTableWidget*数据成员在哪里MyWidget

void MyWidget::mousePressEvent(QMouseEvent *event)  
{  
    QHeaderView *headerview = _table->horizontalHeader();
    QPoint headerpoint = headerview->mapFromGlobal(event->globalPos());
    const int index = headerview->logicalIndexAt(headerpoint);
    if ((index >= 0) && (index < headerview->count())) {
        QApplication::postEvent(headerview, new QMouseEvent(QEvent::MouseButtonPress, headerpoint, event->button(), event->buttons(), Qt::NoModifier));
    }
    QWidget::mousePressEvent(event);  
}  

问题是这个实现似乎产生了一个无限循环或递归。

什么是正确的实现?

非常感谢。

4

1 回答 1

1

我相信您想确保将其标记eventacceptedie:

event->setAccepted( true );

或者

event->accept();

其他根据文档“设置接受参数表示事件接收器想要事件。不需要的事件可能会传播到父小部件。

http://doc.qt.nokia.com/4.7-snapshot/qevent.html#accepted-prop

于 2012-07-27T17:39:03.770 回答