2016-11-18 7 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

2つの明らかな問題:これは配列の初期化方法ではありません。そして、関数の外には一般的なステートメントを持つことはできません。おそらくあなたは[初心者の本を読む]必要があります(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); 

は、ちょうどその時、適切な、それは箱の破壊を処理するために、いくつかの親にボックスを割り当てることを忘れないでください。