2013-02-01 125 views
3

通常我會說將項目添加到QCombobox:如何將字符串添加到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*&)' 

我怎樣才能解決這個問題?

回答

8

不要對QString使用動態內存分配。 QString在內部處理字符串的內存管理 - 如果您自己爲QString對象分配內存,則還需要注意釋放內存。

在你的情況下,只需使用

QComboBox cbb; 
QString s = "hallo"; 
cbb.addItem(s); 
+0

有什麼方法可以將項目添加到頂部而不是底部? – Nickpick

+0

你試過'insertItem(0,s)'嗎? –

1

如果使用指針,你就需要去referenciate它首先:cbb.addItem(* S);無論如何,你爲什麼要在堆上分配一個QString,而在堆棧上的comboBox(很可能會得到一個父)呢?