【发布时间】:2016-07-11 22:21:30
【问题描述】:
我有一个旧的 Qt4 代码,我移植到 Qt5 并构建(gcc4.8,Ubuntu)。该程序不显示任何 GUI 窗口,但可以很好地打印其控制台输出。
最后,我将整个main() 减少到下面的最小代码,并且得到了相同的行为:打印“exec...”并且程序静默运行(不退出,不崩溃),但没有窗口出现。
我应该考虑什么问题?
#include <QApplication>
#include <QWidget>
#include <iostream>
int main (int argc, char **argv)
{
QApplication app(argc, argv);
QWidget window;
window.resize(250, 150);
window.setWindowTitle("Simple example");
window.show();
std::cout << "exec...\n";
return app.exec();
}
【问题讨论】:
-
您在哪里将窗口与应用程序关联(或关联)?在许多 GUI 应用程序中,您必须将窗口插入或添加到应用程序中。
-
@ThomasMatthews 此代码示例应创建大小为 (250, 150) 的空窗口。
-
哪个后端? X11、egl 还是 linuxfb?对我来说,上面的代码在 X11 中按预期工作。确保它没有被隐藏在窗口管理器的某个地方(如果您正在运行窗口管理器)。
-
@TobySpeight 我对“egl”一无所知,但我认为它不是 linuxfb。我将 xorg 用于我的桌面。您使用什么发行版(和版本)?你是如何安装 Qt5 的?
-
我在 Debian 上使用 Qt 版本 5.6.1+dfsg-2 使用
g++ -std=c++14 -fPIC -g -Wall -Wextra -Wwrite-strings -Wno-parentheses $(pkg-config --cflags -libs Qt5Widgets) -o 38173496构建了上述内容(刚刚使用aptitude install qtbase5-dev安装,所以没有什么不寻常的)。我正在使用 FVWM 作为窗口管理器,如果这有影响的话。