【发布时间】: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 没有空行