【问题标题】:Gtk-CRITICAL **: IA__gtk_widget_style_get: assertion `GTK_IS_WIDGET (widget)' failedGtk-CRITICAL **:IA__gtk_widget_style_get:断言“GTK_IS_WIDGET(小部件)”失败
【发布时间】:2013-01-30 14:29:56
【问题描述】:

在静态构建我的 qt 应用程序之后

./configure -static -debug-and-release  -confirm-license -nomake demos -nomake examples -nomake tools 

它工作正常,但我收到几条输出消息大喊:

(MyApplication:32030): Gtk-CRITICAL **: IA__gtk_widget_style_get: assertion `GTK_IS_WIDGET (widget)' failed

真的存在严重问题,我应该用不同的选项重建 qt 吗?

任何帮助将不胜感激。

【问题讨论】:

    标签: qt ubuntu build widget gtk


    【解决方案1】:

    这有点晚了,但希望它可以节省其他人一些时间。

    对我来说,错误是由两件事共同引起的:QCleanlooksStyleQTableWidget。在 ubuntu 上,默认样式是 QCleanlooksStyleQGtkStyle(继承自 QCleanlooksStyle)。当QTableWidget 使用其中一种样式绘制时,我看到了该错误。我的解决方案是这样的:

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        a.setStyle(new QPlastiqueStyle());
    
        MainWindow w;
        w.show();
    
        return a.exec();
    }
    

    【讨论】:

    • 谢谢! Cleanlooks 风格确实是个问题。对我来说,有时我的应用程序的窗口也会扩展到令人难以置信的尺寸(如果有 QTextWidget 等小部件)。但在切换到“Fusion”后,这两个问题都消失了。
    【解决方案2】:

    在 PyQt5 中,您可以使用以下代码来避免该问题。

    app = QApplication()
    app.setStyle('Fusion')
    

    我认为这是“GTK+”风格的问题。

    【讨论】:

      【解决方案3】:

      我在 Qt 的静态构建中也遇到了这个问题。如果您将此代码放在 main 方法中的其他所有问题消失之前:

      #ifdef Q_WS_X11
          qputenv("LIBOVERLAY_SCROLLBAR", 0);
      #endif
      

      【讨论】:

      • 什么?你能详细说明一下这个答案吗?这本身不是有效的代码。
      猜你喜欢
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多