QDockWidget - QGlWidget - 当小部件从停靠栏中拖出时,可绘制无效

Posted

技术标签:

【中文标题】QDockWidget - QGlWidget - 当小部件从停靠栏中拖出时,可绘制无效【英文标题】:QDockWidget - QGlWidget - invalid drawable when widget is dragged out from the dock 【发布时间】:2011-10-23 18:36:07 【问题描述】:

我的应用程序中有一个QDockWidget 对象,其中包含一个QWidget 对象。当我的应用程序运行时,一切似乎都很好。然而,当我从QDockWidget 移动小部件(从 Dock 小部件中将其拖出)时,我的控制台上突然收到了这 10 行警告消息:

2011-10-23 21:06:22.296 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.298 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.299 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.300 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.300 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.301 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.302 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.303 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.304 PerformanceVisualization[42898:903] invalid drawable
2011-10-23 21:06:22.304 PerformanceVisualization[42898:903] invalid drawable

我的主要功能如下:

int main(int argc, char *argv[])

    srand(1);
    QApplication app(argc, argv);
    PerformanceModule *performanceModuleWidget = new PerformanceModule();// a QWidget object
    QMainWindow window;

    QDockWidget *performanceDockWidget = new QDockWidget(QObject::tr("Performance Visualization"), &window);
    performanceDockWidget->setWindowTitle("Performance Visualization Dock");
    performanceDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea);
    performanceDockWidget->setWidget(performanceModuleWidget);

    //performanceDockWidget->show();

    window.addDockWidget(Qt::LeftDockWidgetArea, performanceDockWidget);
    //window.menuBar()->addAction(performanceDockWidget->toggleViewAction());
    //performanceDockWidget->hide(); // explicitly hidden
    window.show();

    return app.exec();

我该如何解决这个问题?。我在这里看到了一个类似的问题:QGLWidget in QScrollArea says "invalid drawable",根据那篇帖子,我尝试删除我的小部件中的所有setFixedSize() 函数并将它们替换为@987654328 @函数,但这并没有解决问题。有没有类似的经历?。你是怎么解决的?

【问题讨论】:

【参考方案1】:

如下所示更改您的 Dockwidget 属性并尝试

 performanceDockWidget->setAllowedAreas(Qt::AllDockWidgetAreas)

如果这不起作用,请将 Dockwidget 属性更改为可调整大小,然后尝试。

【讨论】:

以上是关于QDockWidget - QGlWidget - 当小部件从停靠栏中拖出时,可绘制无效的主要内容,如果未能解决你的问题,请参考以下文章

PySide/PyQt QMainWindow 如何关闭 QDockWidget?

QDockWidget 不会显示内容

QDockWidget 隐藏标题栏

设置QDockWidget的初始大小

与 QMainWindow 的 GUI 命令交互时,QDockWidget 无法正确调整大小

如何以特定方式在 QMainWindow 上定位多个 QDockWidget