我有一个用 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/