3

通常我会通过说将项目添加到 QCombobox:

QCombobox cbb;
cbb.addItem("Hello");

但是如果我尝试这个,我会得到一个错误:

QComboBox cbb;
QString * s = new QString("hallo");
cbb.addItem(s);

error: no matching function for call to 'QComboBox::addItem(QString*&)'

我该如何解决这个问题?

4

2 回答 2

9

不要将动态内存分配与QString. QString在内部处理字符串的内存管理 - 如果您QString自己为对象分配内存,您还需要注意释放内存。

在您的情况下,只需使用

QComboBox cbb;
QString s = "hallo";
cbb.addItem(s);
于 2013-02-01T11:52:55.757 回答
1

如果您使用指针,您需要先取消引用它: cbb.addItem(*s); 无论如何,您为什么要在堆上分配 QString 而在堆栈上分配组合框(很可能会获得父级)?

于 2013-02-01T11:52:57.840 回答