вычисляемые свойства в c ++ Qt - PullRequest
0 голосов
/ 02 ноября 2019

Здравствуйте, я наткнулся на проблему, у меня есть такой код:

void MainWindow::function()
{
    int x = y.size();

    if(x > 0)
    {
        ui->lineEdit_0->setText("0");
    }
    if(x > 1)
    {
        ui->lineEdit_1->setText("1");
    }
    if(x > 2)
    {
        ui->lineEdit_2->setText("2");
    }
}

, и я хочу сделать это в одном цикле for следующим образом:

void MainWindow::function()
{
    int x = y.size()

    for(int i = 0; i < x; i++)
    {
        ui->lineEdit_($i)->setText(i);
    }    
}

это возможно илиэто возможно только в интерпретируемых языках, таких как JavaScript (вычисляемые свойства). Я на правильном пути, делая это, чтобы избежать избыточности кода, или я ошибаюсь.

Ответы [ 2 ]

2 голосов
/ 02 ноября 2019

Вы не можете играть с именем переменной, но вы можете иметь массив, так что вы можете сделать:

void MainWindow::function()
{
    std::array/*<QLineEdit*, 3>*/ line_edits{ui->lineEdit_0, ui->lineEdit_1, ui->lineEdit_2};
    const int x = y.size();

    for (std::size_t i = 0; i != line_edits.size(); ++i) {
        if (x > i) {
            line_edits[i]->setText(std::to_string(i));
        }
    }
}
1 голос
/ 02 ноября 2019

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

for(int i = 0; i < x; i++)
{
    ui->lineEdit[ i ]->setText( i );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...