通常我会通过说:
将项目添加到QComboboxQCombobox cbb;
cbb.addItem("Hello");
但是,如果我尝试这个,我会收到一个错误:
QComboBox cbb;
QString * s = new QString("hallo");
cbb.addItem(s);
error: no matching function for call to 'QComboBox::addItem(QString*&)'
我该如何解决这个问题?
答案 0 :(得分:9)
不要在QString
使用动态内存分配。 QString
在内部处理字符串的内存管理 - 如果您自己为QString
对象分配内存,则还需要注意释放内存。
在您的情况下,只需使用
QComboBox cbb;
QString s = "hallo";
cbb.addItem(s);
答案 1 :(得分:1)
如果你使用指针,你首先需要解除它的参考:cbb.addItem(* s);无论如何,你为什么要在堆上分配一个QString而在堆栈上分配comboBox(很可能会得到一个父类)?