1

私は Qt プログラミングの初心者で、以下のコードに問題があります。ラベルが 1 つだけのシンプルな 2 ボタン アプリケーションを作成したいと考えていました。1 つのボタンは正の増分 1 用で、もう 1 つのボタンは減分 1 用です。プラスまたはマイナス ボタンをクリックすると、ラベルが更新されます。しかし、うまくいきません。コードが機能しない理由はありますか? 要素関数 void に対してコンパイラ エラーが発生します。ただし、エラー メッセージは具体的ではありません。

解決策についてインターネット(集中的なGoogle検索とここでもstackoverflow)をチェックしましたが、見つかりませんでした。他のウェブサイト/リンクへの直接的なヘルプやリンクに感謝します. 質問を言い換えるか、さらに情報を追加する必要がある場合はお知らせください。御時間ありがとうございます。ステファン

#include "widget.h"

int counter = 0;

Widget::Widget(QWidget *parent) :
QWidget(parent)
{
    setFixedSize(200, 120);

    QPushButton *Plus = new QPushButton(tr("+"), this);
    Plus -> setGeometry(62, 40, 75, 30);
    Plus -> setFont(QFont("Times", 10, QFont::Bold));

    QPushButton *Minus = new QPushButton(tr("-"), this);
    Minus -> setGeometry(62, 40, 75, 30);
    Minus -> setFont(QFont("Times", 10, QFont::Bold));

    QLabel *MyLabel = new QLabel();
    MyLabel ->setAlignment(Qt::AlignCenter);
    MyLabel ->setGeometry(62, 40, 75, 30);
    MyLabel ->setNum(counter);

    QVBoxLayout *layout = new QVBoxLayout;
    layout ->addWidget(MyLabel);
    layout ->addWidget(Plus);
    layout ->addWidget(Minus);
    setLayout(layout);


    connect(Plus, SIGNAL(clicked()), this, SLOT(myClickPlus()));
    connect(Minus, SIGNAL(clicked()), this, SLOT(myClickMinus()));
}

void Widget::myClickPlus(){
    counter ++;
    qDebug("Das ist der Plus-Button");
    MyLabel -> setNum(counter);
}

void Widget::myClickMinus()
{
    counter --;
    qDebug("Das ist der Minus-Button");
    MyLabel ->setNum(counter);
}
4

1 に答える 1

3

ウィジェットのコンストラクターで作成している MyLabel はローカル変数です。myClickPlus および myClickMinus メンバー関数で使用している MyLabel は、メンバー変数です。したがって、それらは完全に異なるインスタンスです。

コードがコンパイルされる場合、ウィジェットのコンストラクターでのこの変更により、おそらく問題が解決されます。

QLabel *MyLabel = new QLabel(); // create local QLabel

-->

MyLabel = new QLabel();  // create member QLabel
于 2012-04-15T17:59:29.147 に答える