Как мне сделать что-то вроде if (2 переменные)? - PullRequest
1 голос
/ 24 июля 2011

Я новичок в Qt / C ++, поэтому, когда я учился на некоторых уроках, я хотел сделать что-то другое, но не знал точно, как это сделать.

Вот код,Я использую curently http://pastebin.com/x612nAPV

#include "dialog.h"
#include "ui_dialog.h"
#include <QtGui>
#include <QMessageBox>
#include <QString>
 
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    //ui->checkBox->setChecked(true);
 
}
 
Dialog::~Dialog()
{
    delete ui;
}
 
void Dialog::on_pushButton_clicked()
{
 
    if(ui->checkBox->isChecked())
    {
        QMessageBox::information(this,"Result","Cool another Male !");
    }
 
    if(ui->checkBox_2->isChecked())
    {
        QMessageBox::information(this,"Result", "Yay a female");
    }
}

Я хочу сделать третий if(), который содержит 2 переменные, так что в этом случае, если ни один из флажков не установлен, чтобы показатьсообщение, но я не знаю, как использовать 2 переменные в qt внутри if

вроде

if(2variableshere)
  {
     Do...
  }

Ответы [ 4 ]

11 голосов
/ 24 июля 2011

Чтобы создать оператор if, для которого требуется, чтобы два значения были истинными, вы объединяете их с оператором и , &&:

if (a && b) {
// if a and b are true

Чтобы узнать, является ли значениеfalse, вы используете оператор not , !:

if (!a) {
// if a is false

С помощью этой логики вы можете создать этот оператор, проверяя, что оба значения не проверены.

if (!ui->checkBox_1->isChecked() && !ui->checkBox_2->isChecked()) {
// if box 1 isn't checked and box 2 isn't checked...

С оператором and связан оператор или , ||:

if (a || b) {
// if a or b is true

Мы можем использовать это для структурирования этого условия другим, но эквивалентным образом:

if (!(ui->checkBox_1->isChecked() || ui->checkBox_2->isChecked())) {
// if it is not the case that box 1 is checked or box 2 is checked
3 голосов
/ 24 июля 2011

Я бы сделал это так (если бы у меня были флажки, и нужно было выбрать один - я бы вместо этого использовал переключатели или комбинированный список с двумя опциями, в зависимости от остального графического интерфейса, гарантируя, что только один из возможностей был выбран):

void Dialog::on_pushButton_clicked()
{
    if(ui->checkBox->isChecked())
    {
        QMessageBox::information(this, "Result", "Cool another Male !");
    }
    else if(ui->checkBox_2->isChecked())
    {
        QMessageBox::information(this, "Result", "Yay a female");
    }
    else
    {
        QMessageBox::information(this, "Result", "What are you???");
    }
}

Здесь вам не нужна проверка if(2 variables), поскольку else позаботится об этом. Но если вам нужно что-то подобное в другом месте, вы можете, конечно, использовать && и || совместить два условия.

Как сказал кто-то другой, было бы разумно, если бы вы прочитали учебник по Си или Си ++.

1 голос
/ 24 июля 2011

Вы можете использовать логические операторы - И (&&) ИЛИ (||), чтобы использовать несколько переменных в операторах if. Очевидно, что переменные имеют тип Bool. Вы также можете передавать функции в операторы if, которые возвращают значения типа Bool ..

1 голос
/ 24 июля 2011
void Dialog::on_pushButton_clicked()
{
    if(ui->checkBox->isChecked())
    {
        QMessageBox::information(this,"Result","Cool another Male !");
    }

    if(ui->checkBox_2->isChecked())
    {
        QMessageBox::information(this,"Result", "Yay a female");
    }

    if(!(ui->checkBox->isChecked() || ui->checkBox_2->isChecked()))
    {
        QMessageBox::infomration(this,"Result","Nothing checked.");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...