扩展 QChartView

3
有点不明白为什么将QChartView放在QTabWidget中时会扩展。

这是当QChartView没有扩展(因为它被隐藏)时应用程序的图片。

enter image description here

应用程序中的黑色部分是 QOpenGLWidget
当我单击图表视图时,它会逐渐增大,直到隐藏 QOpenGLWidget

enter image description here

QChartView仅在QVBoxLayout中与QOpenGLWidget一起使用时,不会出现此效果。只有当我将QChartView添加到QTabWidget内部时才会发生这种情况。我正在尝试弄清楚如何使QChartView不扩展,并以其他小部件相同的方式调整大小(例如,在此示例中的QTextEdit小部件中)。
以下是代码,它被编写为重现此效果的最小示例。
#include <QApplication>
#include <QChart>
#include <QChartView>
#include <QMainWindow>
#include <QOpenGLWidget>
#include <QTabWidget>
#include <QTextEdit>
#include <QVBoxLayout>

int
main(int argc, char** argv)
{
  QApplication app(argc, argv);

  // Main Window

  QMainWindow main_window;

  main_window.resize(1280, 720);

  main_window.show();

  // Central Widget

  QWidget central_widget(&main_window);

  main_window.setCentralWidget(&central_widget);

  QVBoxLayout layout(&central_widget);

  central_widget.setLayout(&layout);

  // OpenGL Widget

  QOpenGLWidget gl_widget(&central_widget);

  gl_widget.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

  layout.addWidget(&gl_widget);

  // Tab Widget

  QTabWidget tab_widget(&central_widget);

  layout.addWidget(&tab_widget);

  // Log

  QTextEdit text_edit(&tab_widget);

  text_edit.setReadOnly(true);

  tab_widget.addTab(&text_edit, "Log");

  // Chart View

  QtCharts::QChartView chart_view(&tab_widget);

  tab_widget.addTab(&chart_view, "Chart");

  return app.exec();
}
1个回答

2
问题的原因是QChartView具有扩展SizePolicy而不是QOpenGLWidget,因此当它变为可见时,它会扩展并隐藏其他小部件。 解决方案是在布局中设置与每个小部件关联的拉伸系数:
layout.addWidget(&gl_widget, 1);

layout.addWidget(&tab_widget, 1);

问题已经解决,谢谢。代码中QOpenGLWidget的大小策略被设置为“Expanding”,所以我仍然不确定为什么需要进行这个更改。 - tay10r
如果QTabWidget位于QGridLayout中,您该如何处理?即使传递了Qt :: Alignment(1),我仍然会得到扩展的图表。 - Tyler Shellberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接