0

1つのウィジェットの子にイベントを転送したいと思います。私の現在の実装は(_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

event私はあなたがあなたがすなわちとしてマークすることを確認したいと思うと信じていますaccepted

event->setAccepted( true );

また

event->accept();

その他のドキュメントによると、「acceptパラメータを設定すると、イベントレシーバーがイベントを必要としていることを示します。不要なイベントが親ウィジェットに伝播される可能性があります。

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

于 2012-07-27T17:39:03.770 に答える