【问题标题】:C++ Text Formatting using setw doesnot work with QT's QTextEdit使用 setw 的 C++ 文本格式化不适用于 QT QTextEdit
【发布时间】:2015-10-23 10:46:14
【问题描述】:

我想将数据写入文件。我正在使用 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();
    }

提前致谢。

【问题讨论】:

  • 固定宽度与可变宽度字体问题?
  • 是的。谢谢。使用以下代码解决: const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont);

标签: c++ qt qtextedit iomanip setw


【解决方案1】:

感谢约阿希姆·皮勒伯格。通过设置固定宽度字体解决。此解决方案仅适用于 QT 5.2 及更高版本。

代码:

    const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 2016-04-16
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    相关资源
    最近更新 更多