扩展 QChartView
Posted
技术标签:
【中文标题】扩展 QChartView【英文标题】:Expanding QChartView 【发布时间】:2021-09-17 17:08:52 【问题描述】:对于为什么将QChartView
放在QTabWidget
中时会扩展,有点不知所措。
这是QChartView
未展开时的应用程序图片(因为它被隐藏了)。
应用的黑色部分是QOpenGLWidget
。
当我点击图表视图时,它会逐渐变大,直到 QOpenGLWidget
被隐藏。
当QChartView
只是在QVBoxLayout
和QOpenGLWidget
中时,则不会发生此效果。只有当我在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();
【问题讨论】:
【参考方案1】:问题是因为 QChartView 具有扩展 sizePolicy 而不是 QOpenGLWidget,所以当它变得可见时,它会扩展,隐藏另一个小部件。解决方案是为布局中的每个小部件设置一个拉伸因子:
layout.addWidget(&gl_widget, 1);
layout.addWidget(&tab_widget, 1);
【讨论】:
这解决了这个问题,谢谢。不过,QOpenGLWidget
的大小策略在代码中设置为 Expanding
,所以我仍然不确定为什么需要进行此更改。以上是关于扩展 QChartView的主要内容,如果未能解决你的问题,请参考以下文章
使用橡皮筋选择在 QChartView 中选择 QLineSeries