如何在自定义小部件中显示 QChartView?

How do you display a QChartView in a Custom Widget?

我有一个已分配给 QChartView 的 QChart。在我一直关注的示例中,图表在 main.cpp 中显示为:

window.setCentralWidget(chartView);

在我的项目中,我想利用设计器并因此创建了一个自定义小部件,但它不显示 QChart。我找到了一个示例,他们分配了他们将视图分配给布局,然后设置布局,如下所示:

mainLayout = new QGridLayout;
mainLayout->addWidget(chartView, 0, 0);
setLayout(mainLayout);

但这似乎扰乱了 window 中所有其他小部件的布局。如何让自定义小部件显示我的图表视图?

谢谢!

我让 class 继承自 QChartView(它继承了 QWidget)而不是 QWidget,然后做了:

setChart(myChart);

谢谢。

我就是这样做的。

在您的 .h 文件中:

QGridLayout* gridLayot;
QChart *chart;
QChartView *chartView;

在主构造函数的 .cpp 文件中:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){    
ui->setupUi(this);
ui->centralWidget = new QWidget(this);
this->setCentralWidget(ui->centralWidget);    

chart  = new QChart;
chartView = new QChartView(chart);
gridLayout = new QGridLayout(ui->centralWidget);
gridLayout->addWidget(chartView,0,0);

任何时候你想改变图表我都这样做:

chart  = new QChart;
chartView = new QChartView(chart);
gridLayout->addWidget(chartView,0,0);