1

ファイルにデータを書き込みたい。C++ の iomanip 関数、setw を使用してそのデータをフォーマットして、テキスト フィールドの幅を設定します。ソースコードは以下のとおりです。

std::ofstream dataFile;
dataFile.open(m_fileAbsolutePath.toStdString().c_str(),std::fstream::out);
dataFile << "|";
SET_WIDTH(dataFile,DEV_NAME_FIELD);
dataFile << std::right <<TS_HEADER;

Linux のテキスト エディタ「gedit」では書式設定が適切に表示されます。しかし、このファイルを読み取って QT の QTextEdit に表示しようとすると、書式設定がめちゃくちゃになります。

「C++ の setw」関数を使用して設定された幅が正しく表示されません。なぜそうなのですか?QTextEdit の設定を行う必要がありますか?

TextEdit は次のように設定されます。

 ui->textEdit->setLineWrapMode(QTextEdit::NoWrap);

ファイルを読み取るコード:

std::ifstream dataFile (m_filePath.toStdString().c_str(), std::ifstream::in);

    if(dataFile.is_open()){

        while (!dataFile.eof()) {

            char line[1024] = {0};
            dataFile.getline(line,1024);
            int numberOfBytes = dataFile.gcount();
            if(0 < numberOfBytes){
                QString result(line);
                Q_EMIT resultReady(result);
            }
        }
        dataFile.close();
    }

前もって感謝します。

4

1 に答える 1

0

ヨアヒム・ピレボルグに感謝します。固定幅フォントを設定することで解決しました。このソリューションは、QT 5.2 以降でのみ機能します。

コード:

    const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont);
于 2015-10-23T11:30:43.117 に答える