2012-04-02 4 views
3

저는 QT를 사용하여 작업을 개발하고 적용하는 학생 프로그래머입니다. 현재 데이터를 테이블에서 가져 와서 파일에 저장하는 저장 기능을 개발 중입니다. 내가 열에 데이터를 쓰려고 할 때 약간의 문제가 생겼다. 아무도 혼동하지 마십시오. 내 문제는 데이터 테이블에서 저장하는 경우 텍스트 서식 지정; 그것을 읽지 않습니다. 그래서 현재 데이터가 파일에 저장이처럼 보이는 내 표에서 저장 될 때 : 나는 그것을 연구하는 동안이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에서 온 C++의 라이브러리는 데이터를 채울 최소 문자 양을 설정 한 다음 나머지는 패딩으로 사용합니다. 완벽하게 들리는가? 문제는 내가 그것을 cout 이외의 다른 것들과 함께 작동시키지 못한다는 것이다; 그것은 내가 필요로하는 것이 아니다. 기본적으로 필기 전에 문자열에 공백을 추가해야합니다.

나는 Qt가 아마도 내가 필요한 것을 성취 할 수 있도록 도와 줄 수 있어야한다고 생각한다. 난 그냥 캔트, QString documentation을 refencing 후 QStringList Doucmentation이 멤버 함수를 찾을 수가, 그리고 현재 모든 QTextStream Documentation.

대부분의 기능은 다음과 같습니다 저장할 수도있다 :

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"; 
       } 

내가 setFieldWidth 내 대답은에서이되도록 확신 QTextStream Documentation.하지만 제대로 작동하지 않습니다. 나는이 사람에 대한 쉬운 대답이다 바라고

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

난 그냥 실행하고있어 일부 작가 차단에 있지만 어떤 도움이 달성에 apperciated 될 것이다 : 는 시도. 내 게시물을 읽어 주셔서 감사 드리며 여기에 격차를 해소하기 위해 기여한 도움에 감사드립니다!

+0

; 원하는 효과 (즉, 일단 setFieldWidth가 올바르게 작동하면)를 달성하기 위해 내부 루프 용 텍스트 스트림을 가장 많이 사용할 수 있다고 가정합니다. –

+0

'strList'의 타입은 무엇입니까? –

+1

'leftJustified()'와'rightJustified()'같은 QString 메서드의 조합이 도움이 될 수도 있습니다 – unexplored

답변

2

std::fstream은 STL을 사용하려는 경우 하나의 옵션입니다. 그러나 전체 문자열 목록을 필드로 취급하는 경우 너비는 너비가 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의 의견에 따라 – Chad

+0

이 업데이트되었습니다. 이것을 말하는 것이 가장 먼저 떠오르는 방법 일 것입니다. – AJG85

관련 문제