对于为什么当QChartView放在QTabWidget中时会扩展,我有点不知所措。
这是QChartView没有扩展时的应用程序的图片(因为它是隐藏的)。

这款应用程序的黑色部分是QOpenGLWidget。
当我单击图表视图时,它的大小将逐渐增加,直到隐藏QOpenGLWidget。

当QChartView仅在带有QOpenGLWidget的QVBoxLayout中时,则不会出现此效果。只有当我在QTabWidget中添加QChartView时,才会发生这种情况。我正在尝试找出如何让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(¢ral_widget);
QVBoxLayout layout(¢ral_widget);
central_widget.setLayout(&layout);
// OpenGL Widget
QOpenGLWidget gl_widget(¢ral_widget);
gl_widget.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
layout.addWidget(&gl_widget);
// Tab Widget
QTabWidget tab_widget(¢ral_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();
}发布于 2021-09-17 18:29:29
之所以会出现这个问题,是因为QChartView具有扩展sizePolicy而不是QOpenGLWidget,因此当它变得可见时,它会展开,从而隐藏另一个小部件。解决方案是设置与布局中的每个小部件相关联的拉伸因子:
layout.addWidget(&gl_widget, 1);layout.addWidget(&tab_widget, 1);https://stackoverflow.com/questions/69227220
复制相似问题