【问题标题】:Simple Qt5 application outputs blank lines on terminal简单的 Qt5 应用程序在终端上输出空行
【发布时间】:2019-03-03 19:16:12
【问题描述】:

在运行以下简单的 Qt5 应用程序时,我在终端上看到了奇怪的行为:

#include <QtWidgets/QApplication>
#include <QtWidgets/QPushButton>

int main(int argc, char* argv[]) {
  QApplication app(argc, argv);
  QPushButton pb;
  pb.show();
  return app.exec();
}

当我如下运行这个程序时,输出是:

ton@willow:~/development/gb86 $ install/bin/gb86 &> /dev/null

ton@willow:~/development/gb86 $
ton@willow:~/development/gb86 $

因此,即使将所有输出重定向到 /dev/null 仍然会导致两个输入按键被发送到终端。一些观察:

  • 从非 X11 终端运行应用程序并设置正确的 $DISPLAY 不会显示多余的空行。
  • 链接到同一系统上相同 Qt5 库的其他 Qt5 应用程序具有相同的行为。从终端启动的其他非 Qt5 应用程序没有此行为。
  • 窗口管理器是i3,终端仿真器无所谓,我试过几个不同的(st、Alacrity、Kitty),都有相同的行为。更改 $TERM 也无效。
  • 例如,将 PS1 更改为单个“$”字符不会改变行为。
  • 更改 shell (Zsh/Bash) 不会改变行为。

Qt 版本是 5.11.2。有人知道这里发生了什么吗?关于如何调试的任何提示?有人可以重现吗?

【问题讨论】:

  • 对我来说,从终端运行您的应用程序没有空行(Linux Mint 18.2 上的 Qt5.10.1)
  • @Scab,感谢您的反馈!接下来我可能会尝试从源代码编译的版本,看看是否能解决烦恼。
  • 使用 kwin/kde 和 Qt 5.11.2 和 konsole 作为终端的 Arch Linux 上也没有空行
  • 当然会导致Qt源代码检查。从实际的角度来看,我不想为此浪费时间。甚至超过50分。 :-]
  • 使用来自 Neon 18.1 的 Qt 5.12 没有空行

标签: linux qt qt5


【解决方案1】:

在可以显示不可打印字符的终端中运行您的应用程序。它可能会发出一些格式化“转义”代码。

【讨论】:

  • 好吧,废话。我是新来的,我以为我在评论,而是发布了一个答案。对不起!
猜你喜欢
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多