【问题标题】:Qt child widget does not paint on empty canvasQt 子小部件不在空画布上绘制
【发布时间】:2015-06-26 00:30:57
【问题描述】:

我有一个父 QGLWidget,它有一个只有一个 QSlider 的子 QWidget。子部件的初始化发生在父部件的构造函数中:

GLWidget::GLWidget(const QGLFormat& format, TimeControllers time_controllers,
                ViewControllers view_controllers, TerrainControllers terrain_controllers, TemperatureEditDialog * temp_edit_dlg,
                Actions * render_actions, Actions* overlay_actions, Actions * control_actions, Actions * show_actions,
                QWidget * parent) :  m_latitude_controller(this) {
...

m_latitude_controller 是有问题的 QWidget。

第一次加载时,它看起来不错:

但是,如果我使用滑块,它会变成这样:

长话短说,似乎在重绘事件中,QWidget 不是从头开始重绘,而是在之前的内容上绘制。有什么想法吗?

【问题讨论】:

  • Plain QWidgets over QGLWidgets 从未得到正确支持。你可以迁移到 Qt 5 和 QOpenGLWidget 吗?
  • 了解您的 Qt 版本会很有用。在 Qt 5.4 及更高版本上,您应该使用QOpenGLWidget,这应该可以解决您的问题。
  • 非常感谢@peppe。这确实是因为我使用的是 Qt

标签: c++ qt


【解决方案1】:

问题出在我使用的 Qt 版本上。我移植到 Qt 5.4 并使用 QOpenGlWidget 而不是 QGLWidget 并且它可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多