Как обратиться к ui в своей функции?

Нужно сделать функцию для вывода вектора в plainTextEdit. Если пытаюсь установить текст этому элементу, например, при клике на кнопку, то использую это:

ui->plainTextEdit->setPlainText(str);

Но при попытке сделать тоже самое в своей функции я не могу обратиться к ui->, чтобы потом установить текст в plainTextEdit. Просто появляется ошибка "Use of undeclared identifier 'ui'". Вот сама функция:

void print_vector(std::vector<Student>& vc)
{
    std::vector<Student>::iterator it_s = vc.begin();
    QString str;

    for (int id = 0; it_s != vc.end(); it_s++, id++)
    {

        QString qs_id = QString::number(id);
        str += qs_id + " Имя: " + vc[id].name + "\t Возраст: " + vc[id].age + "\tБаллы: " + vc[id].score + "\n";
    }
    ui->plainTextEdit->setPlainText(str); //вот здесь ошибка
}

Ответы (2 шт):

Автор решения: Sergey Tatarincev

Надеюсь вы основы ООП игнорируете не из религиозных и прочих побуждений? :) Ваша функция находится вне класса, и потому взаимодействовать с ним не может. Включите вашу функцию в класс и не придется изобретать велосипед (не забудьте в .h добавить)

void MainWindow::print_vector(std::vector<Student>& vc)
{
    std::vector<Student>::iterator it_s = vc.begin();
    QString str;

    for (int id = 0; it_s != vc.end(); it_s++, id++)
    {

        QString qs_id = QString::number(id);
        str += qs_id + " Имя: " + vc[id].name + "\t Возраст: " + vc[id].age + "\tБаллы: " + vc[id].score + "\n";
    }
    ui->plainTextEdit->setPlainText(str); //вот здесь ошибка
}
→ Ссылка
Автор решения: Vova Denys

Попробуй наоборот)) если нет доступа к класу окна и не можеш использовать его функционал то сделай функционал своего класа так что б ты мог его использовать в методах оконного класа))

QString print_vector(std::vector<Student>& vc)
{
std::vector<Student>::iterator it_s = vc.begin();
QString str;

for (int id = 0; it_s != vc.end(); it_s++, id++)
{

    QString qs_id = QString::number(id);
    str += qs_id + " Имя: " + vc[id].name + "\t Возраст: " + vc[id].age + "\tБаллы: " + vc[id].score + "\n";
}
 
return str;
}


void MainWindow::on_PrintButton_clicked()
{
 std::vector<Student>& vc;
 void fillGivenVector(vc); 
 QString str = print_vector(vc);  //youre function (name should be changed)
 
 ui->plainTextEdit->setPlainText(str); //c этого метода есть доступ 

}
→ Ссылка