0

N8 (および C7) をターゲットとするプログラムのタッチ入力を取得しようとしていますが、QTouchEvent::touchPoints() を使用してタッチポイントを保持するための QList を作成できません。プログラムは次の行でクラッシュします。Thread has crashed: A data abort exception has occurred accessing 0xee

オーバーロードされたイベント関数は次のようになります。

bool GLWindow::event(QEvent *event)
{
    switch ( event->type() ) {
        case QEvent::TouchBegin: {
            QList<QTouchEvent::TouchPoint> touchBeginPoints =
                        static_cast<QTouchEvent *>(event)->touchPoints();
            foreach (const QTouchEvent::TouchPoint &touchBeginPoint, touchBeginPoints)
            {
                float touchBeginX = touchBeginPoint.pos().x();
                float touchBeginY = touchBeginPoint.pos().y();
                qDebug() << "touchBeginPoint := " << touchBeginX << ",  " << touchBeginY;
            }
            break;
        }
        case QEvent::TouchUpdate: {
            // same as touch begin: getting touch point
            break;
        }
        case QEvent::TouchEnd: {
            // same as touch begin: getting touch point
            break;
        }
        default: {
            qDebug() << "Goodbye";
           return true;
        }
    }
    return true;
}

今、

  • これまでコンテナを扱ったことはありません。ただし、プログラムの別の部分で QList を作成して使用すると、問題なく動作します。.pro ファイルに何かを含める必要がありますか? (ほとんどの問題は、これに関して私と一緒に終わるようです!)
  • Qt と Symbian の例外について (少し) 読みましたが、そのほとんどを取得できません。しかし、3D オブジェクトのテクスチャを除いて、ネットワーキングやリソース ベースの I/O や操作は行っていません。プログラムの実行中のメモリ割り当てが問題を引き起こしている可能性はありますか?

基本的に、タッチポイントを印刷しようとしています。しかし、QList を作成できない理由がわかりません。コードは正常にコンパイルされます。最善を尽くしましたが (失敗しました)、タッチポイントの画面座標を取得する他の方法 (QList を必要としない方法) はありますか? どんなコメントでも大歓迎です。

[qt-project.orgからの転載。]

4

2 に答える 2

1

あなたの構文は 100% 正しいです。この例を見てください: http://www.developer.nokia.com/Community/Wiki/Painting_in_Qt

私が推測しているのはQTouchEvent::touchPoints()、スタックをオーバーフローするのに十分な大きさのリストを返すことです。アプリケーションのスタック サイズを増やしてみてください。

于 2012-03-21T10:27:11.997 に答える
1

あなたの構文は正しいですか?コンパイルエラーはteukkamポイントを補強しているようです...

  static_cast<QTouchEvent *>(event)->touchPoints()

  (dynamic_cast<QTouchEvent *>(event))->touchPoints()

括弧に注意してください...

于 2012-03-21T09:31:38.690 に答える