不能在QLineEdit中使用QString,也不能在QComboBox中使用QString作为参数

时间:2014-01-23 22:53:28

标签: c++ qt qstring qcombobox qlineedit

我正在尝试创建一个函数来替换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 *&)'的匹配函数

由于

1 个答案:

答案 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库的对象,它们是隐式共享的。