QDockWidget - QGlWidget - недопустимая отрисовка, когда виджет вытаскивается из дока - PullRequest
0 голосов
/ 23 октября 2011

В моем приложении есть объект 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 в QScrollArea говорит "недопустимое рисование" , и на основании этого поста я попытался удалить все setFixedSize() функция внутри моего виджета и заменить их на setMinimumSize() функцию, но это не решило проблему. Есть похожий опыт? Как ты это решил?

1 Ответ

0 голосов
/ 15 мая 2012

Измените свойство Dockwidget, как указано ниже, и попробуйте

 performanceDockWidget->setAllowedAreas(Qt::AllDockWidgetAreas)

Если это не сработает, измените свойство Dockwidget на resizable, а затем попробуйте.

...