【问题标题】:QT and Win32 Console ApplicationsQT 和 Win32 控制台应用程序
【发布时间】:2024-01-03 10:19:01
【问题描述】:

我有一个显示此行为的 Win32 控制台应用程序。

1) 使用VC 2005 cl 编译和链接,应用程序运行良好。我所说的正常工作的意思是根据代码页 437 正确显示 128 以上的字符。

2) 当我使用 QT qmake 构建项目(QT += 控制台)和 SOURCES = main.c 时,构建顺利,并且我的 main.exe 被创建。但是 128 以上的字符,使用 WriteConsoleOutput 函数显示不同(一些奇怪的字符)。我觉得这与代码页设置不正确有关。我没有调用任何 QT 函数,也没有创建 QApplication 或 QCoreApplication 对象。当我创建 QApplication 对象或 QCoreApplication 对象时,结果相同(不显示正确的字符)。

有没有办法使用 Win32 控制台和 QT 正确显示 128 以上的字符?

【问题讨论】:

  • JFYI,它写成 Qt,而不是 QT。

标签: winapi console qt4


【解决方案1】:

如果 WriteConsoleOuput 是 Windows 特定的 API,我当然不建议使用。 Qt 提供了一种使用QTextStream 写出字符串的简单方法:

// setup
QFile f;
f.open(stdout, QIODevice::WriteOnly);
QTextStream qout(&f);

// usage
qout << tr("translate this text"); 

如果可能,我建议您对所有内容都使用 UTF-8。那么你就不用担心不同的编码等等。如果你因为某种原因需要以本地编码输出,那么考虑QString::fromLocal8bit()

【讨论】:

  • 如何使用QTextStream为要输出的文本添加颜色,并定位光标?
  • @Blaise 你应该提出另一个问题
【解决方案2】:

我通过使用WriteConsoleA 函数解决了这个问题。

【讨论】:

  • 只是下次,您还可以对现有答案写评论。但没有冒犯:)
最近更新 更多