Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';不要将QLineEdit或QComboBox中的QString用作参数_C++_Qt_Qstring_Qcombobox_Qlineedit - Fatal编程技术网

C++ Can';不要将QLineEdit或QComboBox中的QString用作参数

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

我试图创建一个函数,当用户希望使用QPushButton将is名称恢复为默认值时,替换QLineEdit中的文本

这就是代码被“保存”的地方

这是我用来将值更改回默认值的函数

//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());