C++ Can';不要将QLineEdit或QComboBox中的QString用作参数
我试图创建一个函数,当用户希望使用QPushButton将is名称恢复为默认值时,替换QLineEdit中的文本 这就是代码被“保存”的地方 这是我用来将值更改回默认值的函数C++ Can';不要将QLineEdit或QComboBox中的QString用作参数,c++,qt,qstring,qcombobox,qlineedit,C++,Qt,Qstring,Qcombobox,Qlineedit,我试图创建一个函数,当用户希望使用QPushButton将is名称恢复为默认值时,替换QLineEdit中的文本 这就是代码被“保存”的地方 这是我用来将值更改回默认值的函数 //This code works void ProfileManager::revertName(){ lineditPlayerName->setText("nameAsDefault"); btnRevertName->setEnabled(false); } 但我需要这样: //Thi
//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
库的对象,它们是隐式共享的。你能解释一下原因吗,我只需要理解一下。顺便说一句,谢谢你的回答。谢谢你的快速回答,非常感谢。你真的需要动态分配你的QString吗?在Qt中,我几乎不需要这样做。我已经在网上阅读了一篇教程,这是关于我所有的阵型。。。如果您能解释为什么我不需要这样做,我们将不胜感激,您可以解释如何这样做。您想要的是类的QString nameAsDefault
成员,而不是QString*nameAsDefault
(指向字符串的指针)。然后,只需编写nameAsDefault=lineeditPlayerName->text()
即可进行设置。
nameAsDefault = new QString(lineditPlayerName->text());