我正在尝试创建一个函数来替换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 :(得分: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
库的对象,它们是隐式共享的。