0

私は楽しみのために QT5 を学んでおり、2D ゲームのウィジェットへのペイントについて学んでいます。私は多くのチュートリアルとドキュメントを調べてきましたが、ここからどこを調査すればよいかについて意見を求めたいと思っています。

私が学んだことから、ペイントは paintEvent 関数でのみ実行できるようです。キーボード入力に応じてウィジェットに条件付きで何かをペイントできるようにする方法を理解しようとしています。たとえば、a を押すと「アルファ」、b を押すと「ベータ」と出力するようにします。

明らかに、グローバル文字列変数でこれを行うことができますが、他の方法は何でしょうか? これを行うための適切な QT の方法を探していますが、何か提案はありますか? 次の疑似コードをどのように実装しますか?

void paintEvent(QPaintEvent*)
{
  QPainter painter(this);

  //painter.drawText(QPoint(100,100), "example");

 }


void keyPressEvent( QKeyEvent *k )
{
    QString temp = k->text();

    if(temp == "a") 
        //paint "alpha"
    if(temp == "b")
        //paint "beta"
}

前もって感謝します!

4

2 に答える 2

0

あなたはほとんどそこにいます。グローバル変数ではなく、メンバー変数を使用します。私はあなたのキープレスメソッドを次のように書きます:

class MyWidget : public QWidget {
    protected:
        void paintEvent(QPaintEvent*);
        void keyPressEvent(QKeyEvent*);
    private:
        QString mText;
};

...

void MyWidget::keyPressEvent(QKeyEvent *k) {
    if(k->key() == Qt::Key_A)
        mText = "alpha";
    else if(k->key() == Qt::Key_B)
        mText = "beta";

    update();
}

を使用key()すると、魔法の文字列を比較するよりもはるかに安全になります。

于 2013-07-01T03:26:42.887 に答える