2016-11-18 83 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); 

只记得盒子分配到一些父母做出适当的时候处理盒破坏。