c++ - Q文件对话框 : GtkDialog mapped without a transient parent

标签 c++ qt

我有一个用 C++ 中的 Qt 编写的程序的源代码片段,在 Linux 下运行,它创建一个 QFileDialog 来打开现有文件。如果我执行此操作,一切似乎都正常,但是当创建对话框时,我收到一条警告说 “Gtk-Message: GtkDialog mapped without a transient parent”

在另一个thread我发现调用此函数“gtk_window_set_transient_for()”可修复此错误。但是这个函数是GTK库的一部分但是我使用的是Qt框架。那么有什么解决方案可以解决这个错误吗?

这个对话框的父级是一个 QMainWindow:

QString filename = QFileDialog::getOpenFileName(this, "Open File");

最佳答案

从阅读中可以看出 https://forum.qt.io/topic/85997/gtk-warning-for-native-qfiledialog-under-linux这是 Qt 中的一个问题,我们作为 Qt 用户无法直接解决(即使,我们真的不想作为 Qt 的吸引力的一部分是跨平台支持)。即使在 Qt 中修复它本身似乎也很难,因为 QWidget 不能是 GTK 对话框的父级。

我唯一想到的是,有可能“以某种方式”重定向错误消息以抑制它。

关于c++ - Q文件对话框 : GtkDialog mapped without a transient parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47847739/

相关文章:

c++ - 如何定义和使用 boost::function with "optional arguments"?

c++ - std::string 可以用于 openssl 加密 key 吗?

python - 如何测试更快的 GUI 应用程序?

qt - 为 QML 组件分配键盘快捷键

c++ - 需要帮助将一些 LPCTSTR 传递给 C++ 中的函数

c++ - VC++ 未声明的标识符

c++ - 类在另一个类中初始化,它如何生存?

c++ - 物体坐标

c++ - QFileSystemWatcher Unresolved external

c++ - 在虚拟桌面qt中获取特定屏幕的中心