Как обратиться к 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 шт):
Надеюсь вы основы ООП игнорируете не из религиозных и прочих побуждений? :) Ваша функция находится вне класса, и потому взаимодействовать с ним не может. Включите вашу функцию в класс и не придется изобретать велосипед (не забудьте в .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); //вот здесь ошибка
}
Попробуй наоборот)) если нет доступа к класу окна и не можеш использовать его функционал то сделай функционал своего класа так что б ты мог его использовать в методах оконного класа))
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 этого метода есть доступ
}