C++字符串声明和Qt问题
问题描述:
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头文件。
答
除了以前的评论中已经提到的问题QComboBox :: addItem方法需要对QString的引用而不是指针。
既然你决定使用Qt框架,你可以拥抱它的集合,它允许与各种小部件更好的互操作性。因此,你的例子可以重写得简单一些。 例如:
QStringList currencyNames{"gbp","usd","eur","aud"};
QComboBox *box = new QComboBox();
box->addItems(currencyNames);
只记得盒子分配到一些父母做出适当的时候处理盒破坏。
两个明显的问题:这不是你如何初始化一个数组;而且你不能在函数之外使用泛型语句。也许你需要[阅读初学者书](http://*.com/questions/388242/the-definitive-c-book-guide-and-list)? –
更多错误:没有'QString :: string',而是'QString :: fromStdString'。它不返回指针,而是一个'QString'对象 –
投票结束为“太宽泛”。问题在于你是C++的新手,并且一次编写了太多的代码。因此,您的代码中有多个语法错误,并且它们开始重叠。在那时,编译器开始猜测你可能意味着什么的真正问题。如果您尝试了一个更简单的例子,那么您应该知道函数外部的'currencyNames [4] ='行是错误的,并且在尝试使用它之前修复了这个错误。 – MSalters