Возвращает значение QString из метода void внутри класса

#c #qt #qstring

#c #qt #qstring

Вопрос:

file.cpp

 fileTxt::fileTxt()
{

}

fileTxt::~fileTxt()
{

}

void fileTxt::setFileTxt(Ui::Dialog *ui)
{
    QString fileName="test.txt"
}

void fileTxt::elabFileTxt(Ui::Dialog *ui)
{
    ui->label_7->setText(fileName);
}
  

у меня есть два метода внутри класса fileTxt.
В методе setFileTxt я устанавливаю имя файла члена QString в test.txt .
В файле.для имени файла h установлено значение private.
Почему fileName не передается в метод elabFileTxt, если два метода находятся в одном классе? Label_7 ничего не выводит. Если я использую «имя файла», label_7 выводит имя файла.

Комментарии:

1. Это очень простой вопрос. Я предлагаю вам потратить некоторое время на изучение основ C , прежде чем внедрять код в Qt. «Язык программирования C » (Б. Страуструп) — хорошее место для начала.

Ответ №1:

Вы повторно объявляете и определяете локальную переменную вместо глобальной переменной вашего класса, чего вы хотите, так это:

 void fileTxt::setFileTxt(Ui::Dialog *ui)
{
    fileName="test.txt";
}
  

Комментарии:

1. Да, это очень новая ошибка bie (me). Спасибо

Ответ №2:

Вы не можете вернуть a QString из функции с void возвращаемым типом.

Но здесь вы можете использовать преимущество объектной ориентации.

Вы добавляете QString член в класс и устанавливаете его.

 class fileTxt //...
{
    //...
    private:
        QString fileName;
};
  

а затем используйте переменную-член

 void fileTxt::setFileTxt(Ui::Dialog *ui)
{
    fileName="test.txt" //uses class member fileName
}

void fileTxt::elabFileTxt(Ui::Dialog *ui)
{
    ui->label_7->setText(fileName);
}