2012-04-02 3 views
3

私はQTを使用して仕事をする学生プログラマーです。現在、データをテーブルから取り出してファイルに保存する保存機能を開発しています。私は列にデータを書き込もうとすると何か問題が起きます。誰にも混乱させない。私の問題は、データテーブルからSAVINGしたときのテキストの書式設定です。それを読んでいない。だから、現在のデータは、私の表から保存されたとき、それはファイルに保存され、次のようになりますされていますiomanipを使用してQtでテキストファイルへのデータ出力をフォーマットする

0 0.048 300 101325 0 0 
10 0.048 300 101325 0 0 

私はそれが研究中、この

0 0.048 300 101325 0 0 
10 0.048 300 101325 0 0 

のように見える必要があり、私はiomanipからsetwに出くわしましたlibrary in C++では、データを埋めるための最小文字数を設定し、残りはパディングとして使用します。完璧に聞こえますか?問題は、私はそれをcout以外のものと一緒に使うことはできません。それは私が必要とするものではありません。私は基本的に書かれる前に文字列にスペースを追加する必要があります。

Qtには、おそらく私がここで必要なものを達成するのを助けるための何かがあるはずです(それはもっと簡単です)。私のように見えるだけでカントはQStringList DoucmentationQString documentationをrefencingた後に、このメンバ関数を見つけるように見えること、およびすべてのQTextStream Documentation.

のほとんどは現在、機能を保存マイ:私はsetFieldWidthがから私の答えになるように確信して

QTextStream data(&saveFileAsscf); 
QStringList tmpList; 
for (int x = 0; x<ui->tableWidgetReaderTable->rowCount(); x++) 
       { 
        strList.clear(); 
        for(int a = 0; a < ui->tableWidgetReaderTable->columnCount(); a++) 
        { 
         strList << ui->tableWidgetReaderTable->item(x,a)->text(); 
        } 
        data <<strList.join(" ") << "\n"; 
       } 

QTextStream Documentation.しかし、私はそれを正しく動作させることはできません。 が試した:

data.setFieldWidth(13) << strList.join(" ") << "\n"; 

私はこれが誰かのために簡単な答えであることを期待していると私はいくつかの作家のブロックに実行しているが、任意のヘルプはこれを達成するにapperciatedされるだろう。私のポストを読んでくれてありがとうと、私はここにギャップを埋めるために貢献したすべての助けに感謝します!

+0

。目的の効果(つまり、一度setFieldWidthが正しく機能する)を達成するために、ほとんどの私のText Streamをinner forループに渡すことができたとしましょう。 –

+0

'strList'の型は何ですか? –

+1

'leftJustified()'や 'rightJustified()'のようなQStringメソッドの組み合わせも役に立ちます。 – unexplored

答えて

2

std::fstreamは、STLを使用する場合の1つのオプションです。しかし、文字列リスト全体をフィールドとして扱っている場合は、幅が13よりもはるかに大きい場合は、setFieldWidth(23)を試してみてください。代わりに各値をフィールドとして扱うと、より簡単になります。

私はフィールドとして各値を処理することによって何を意味するかの例:確かに

QTextStream data(&saveFileAsscf); 
for (int x = 0; x<ui->tableWidgetReaderTable->rowCount(); x++) 
{ 
    data.setPadChar(' '); 
    for(int a = 0; a < ui->tableWidgetReaderTable->columnCount(); a++) 
    { 
     QString value = ui->tableWidgetReaderTable->item(x,a)->text(); 
     data.setFieldWidth(qMax(2, value.length())); 
     data << value; 
     data.setFieldWidth(1); 
     data << " "; 
    } 
    data << "\n"; 
} 
+0

幅を設定するには_how_の例を挙げるべきです。私は 'data << setw(?)<< ui-> tableWidg ...'を提案します。 Chadのコメントごとに更新する方法は1つある。 – Chad

+0

これが何とも言えません。 – AJG85

関連する問題