0

チェックボックスがチェックされている場合、次のコードは機能しません。チェックボックスがチェックされているかどうかに関係なく、「else」ステートメントにジャンプします。

   void MainWindow::runButtonClicked()

        {
            if (MainWindow::betAllRed->isChecked()==true){
                red.didBet=true;
                qDebug()<<"bet Red true";
            } else{
                qDebug()<<"red not checked";
            }
        }

ここで何か著しく間違っていることはありますか、それとも別の場所に問題がありますか? チェック状態を取得するためにスロットを接続する必要がありますか?

4

2 に答える 2

1

問題は、betAllRed チェックボックスにアクセスする方法です。デザイナーを使用している場合は、Ui を使用してアクセスできます。

if(ui->betAllRed->isChecked())

独自のコードを使用している場合:

QComboBox *betAllRed = new QComboBox(this);

次を使用してアクセスするだけです:

if(this->betAllRed->isChecked())
于 2012-12-30T09:41:49.767 に答える
1

あなたが間違っていると思うのは、実際には 2 つのbetAllRedフィールドがあることです: You have created and initialized QCheckBox* MainWindow::betAllRed、そして MainWindow::ui にもチェックボックスがあります (デザイナーで名前を変更した場合はおそらく同じ名前で、それ以外の場合はデフォルトでデザイナーによって作成された名前)。

この場合は、独自の を削除してから、チェックボックスにアクセスbetAllRedするために使用するコードを修正しui->betAllRedます (現在、デフォルト名になっている場合は、デザイナでチェックボックスの名前を変更する可能性があります)。

そして、あなたのこの行に関するコーディング スタイルのメモ:

if (MainWindow::betAllRed->isChecked()==true){

その行はこれと同じで、はるかに短く明確になります。

if (betAllRed->isChecked()) {
于 2012-12-30T10:26:49.593 に答える