Нельзя использовать QString в QLineEdit или QComboBox в качестве параметра

Я пытаюсь создать функцию, которая заменяет текст внутри 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 *&)»

Спасибо

0

Решение

Вы должны разыменовать 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 библиотека, которой неявно делятся.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]