2016-11-18 90 views
-1

CPP文件:C++字符串聲明和Qt問題

#include "currency.hpp" 
currencyNames[4] = {"gbp","usd","eur","aud"}; 

QComboBox *box1 = new QComboBox(); 
int i; 
for(i=0; i < 4; i++){ 
    QString *s = QString::string(currencyNames[i]); 
    box1->addItem(s); 
} 

HPP文件:

#pragma once 
#include string 

. 
. 
. 

static const int SIZE = 4; 
std::string currencyNames[SIZE]; 

我不斷收到一些錯誤,我想通過數組包含上述然後循環的信息數組將其添加到QComboBox。沒有成功。包括所有相關的Qt頭文件。

+3

兩個明顯的問題:這不是你如何初始化一個數組;而且你不能在函數之外使用泛型語句。也許你需要[閱讀初學者書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)? –

+1

更多錯誤:沒有'QString :: string',而是'QString :: fromStdString'。它不返回指針,而是一個'QString'對象 –

+1

投票結束爲「太寬泛」。問題在於你是C++的新手,並且一次編寫了太多的代碼。因此,您的代碼中有多個語法錯誤,並且它們開始重疊。在那時,編譯器開始猜測你可能意味着什麼的真正問題。如果您嘗試了一個更簡單的例子,那麼您應該知道函數外部的'currencyNames [4] ='行是錯誤的,並且在嘗試使用它之前修復了這個錯誤。 – MSalters

回答

0

除了以前的評論中已經提到的問題QComboBox :: addItem方法需要對QString的引用而不是指針。

既然你決定使用Qt框架,你可以擁抱它的集合,它允許與各種小部件更好的互操作性。因此,你的例子可以重寫得簡單一些。 例如:

QStringList currencyNames{"gbp","usd","eur","aud"}; 
QComboBox *box = new QComboBox(); 
box->addItems(currencyNames); 

只記得盒子分配到一些父母做出適當的時候處理盒破壞。