Я пытаюсь создать функцию, которая заменяет текст внутри QLineEdit, когда пользователь хочет вернуть имя по умолчанию, используя QPushButton.
Вот где код «сохраняется».
`//Must get information in the DB
lineditPlayerName = new QLineEdit("Nouveau Profil");
nameAsDefault = new QString(lineditPlayerName->text());
languageAsDefault = new QString(comboBoxlanguage->currentText());`
Это функция, которую я использую, чтобы изменить значение обратно на значение по умолчанию
//This code works
void ProfileManager::revertName(){
lineditPlayerName->setText("nameAsDefault");
btnRevertName->setEnabled(false);
}
Но мне нужно это так:
//This code does'nt
void ProfileManager::revertName(){
lineditPlayerName->setText(NameAsDefault);
btnRevertName->setEnabled(false);
}
Я не могу заставить его работать, это дает мне эту ошибку:
нет соответствующей функции для вызова ‘QLineEdit :: setText (QString *&)»
Спасибо
Вы должны разыменовать NameAsDefault
переменная
void ProfileManager::revertName(){
lineditPlayerName->setText(*NameAsDefault);
// ^ Here I dereferenced the pointer
btnRevertName->setEnabled(false);
}
Тип nameAsDefault
является указатель к QString
, тем не мение QLineEdit::setText
ожидает QString
объект, а не указатель. Поэтому компилятор говорит вам, что нет функции, которая ожидает указатель.
Я не видел ваше заявление о nameAsDefault
переменная, но так как
nameAsDefault = new QString(lineditPlayerName->text());
компилирует и new
возвращает указатель, я полагаю, это указатель.
Кроме того, что, вероятно, более важно, это то, что вы почти никогда не должны выделять объекты, используя new
, Особенно не предметы из Qt
библиотека, которой неявно делятся.
Других решений пока нет …