2012-10-14 4 views
1

Qt 프로그래밍을 처음 사용했습니다.Qt C++에서 파일 읽기 및 쓰기

나는 메인 화면과 3 개의 창으로 구성된 프로그램을 만들고 있는데, 병렬 포트로 제어되는 트럭 라디오를 운전하는 것을 기반으로한다.

내 문제는 두 번째 창에서 특정 값을 입력하고 txt 파일에 저장한다는 것입니다 (제대로 확인하고 저장했습니다). 문제는 내가 데이터 생성 파일을 읽고 인쇄하도록 설계된 세 번째 창으로 이동했을 때 나타나는 것이 아니라 프로그램을 종료 할 때까지 표시된다는 것입니다.

데이터를 저장 한 후에도 파일을 닫은 다음 읽을 수 있도록 열어 놓았습니다. 그때는 닫지 않았지만 프로그램을 종료 할 때만 나타납니다.

첨부 된 프로그램 파일 아래. Link!

내 영어 매우 감사하고 죄송합니다!

참고 : PC 포트를 처리하므로 프로그램을 실행하기위한 사용자 권한 (Ubuntu에서 작동)을 반드시 입력해야합니다.

+1

Mhhhh ... 닫기 전에 파일을 강제로 플러시 할 수 있습니까? –

+0

close()는 파일을 자동으로 비 웁니다. 둘 다 호출 할 필요가 없습니다. –

+0

내 생각 엔 응용 프로그램이 시작되면 세 번째 창에서 즉시 파일을 읽을 때 모든 창이 만들어집니다. 두 번째 창은 때때로 나중에 파일에 씁니다. 디버거에서 응용 프로그램을 실행하고 작성 및 읽기가 발생했다고 생각되는 순서대로 수행되는지 확인 했습니까? –

답변

0

this QT 예에서 :

bool MainWindow::saveFile(const QString &fileName) 
{ 
    QFile file(fileName); 
    if (!file.open(QFile::WriteOnly | QFile::Text)) 
    { 
      QMessageBox::warning(this, tr("Application"), 
          tr("Cannot write file %1:\n%2.") 
          .arg(fileName) 
          .arg(file.errorString())); 
     return false; 
    } 

    QTextStream out(&file); 
#ifndef QT_NO_CURSOR 
QApplication::setOverrideCursor(Qt::WaitCursor); 
#endif 
out << textEdit->toPlainText(); 
#ifndef QT_NO_CURSOR 
QApplication::restoreOverrideCursor(); 
#endif 

    setCurrentFile(fileName); 
    statusBar()->showMessage(tr("File saved"), 2000); 
    return true; 
} 
당신이 정의하고 사용자가 동의하는 경우, 사용자가 파일 이름 (QFileDialog가 빠른 방법입니다)에 문의 슬롯을 정의 할 수

(데이터 실행 저장 취소되지 않습니다) 사용자 파일 이름으로이 메서드를 호출합니다. statusBar() -> showMessage();를 삭제할 수 있습니다. 상태 표시 줄 등이없는 경우 ...