-1

このエラーを理解しようとしています。Qt Creator で作成した簡単なアプリケーションがあります。

ボタンが 3 つあり、そのうちの 2 つが有効になっていません。次に、最初のボタンを押すと、それらを表示したいのですが、ボタンを押すと、「プログラムが動作しなくなりました」というWindowsエラーが発生します。プログラムがコンパイルされ、他のすべてが実行されます。

QPushButton *dealButton = new QPushButton(tr("Deal cards"));
dealButton->show();

QPushButton *hitButton = new QPushButton(tr("HIT"));
hitButton->show();
hitButton->setEnabled(false);

QPushButton *standButton = new QPushButton(tr("STAND"));
standButton->show();
standButton->setEnabled(false);

...
connect(dealButton, SIGNAL(clicked()), this, SLOT(dealCards()));

...
void MainWindow::dealCards()
{
hitButton->setEnabled(true);
standButton->setEnabled(true);
}

それがコードです。

4

1 に答える 1

4

問題は、再宣言していることと、コンストラクター (または表示している呼び出しをdealButton持つ関数) で他のものを宣言していることです。new

クラス定義に次のものが必要です。

private: // probably
  QPushButton *dealButton;

そして、コンストラクターまたは gui init コードで:

dealButton = new QPushButton(...); // note: not QPushButton *dealButton = ...

あなたが今持っているのはdealButton、そのスコープ(関数)にローカルなという名前の新しい変数を作成することです。その変数は、クラスのメンバーを隠しています (マスクしています)。

于 2011-05-28T12:43:17.643 に答える