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

时间:2016-08-24 16:05:58

标签: c++ qt widget

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

window.setCentralWidget(chartView);

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

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

但这似乎弄乱了窗口中所有其他小部件的布局。如何让Custom Widget显示我的chartView?

谢谢!

2 个答案:

答案 0 :(得分:3)

我让这个类继承自QChartView(继承了QWidget)而不是QWidget,然后做了:

setChart(myChart);

感谢。

答案 1 :(得分:3)

这就是我做到的。

在你的.h文件中:

SELECT articles.articleID FROM articles, article-tag-link, tags WHERE articles.articleID = article-tag-link.articleID AND tags.tagID = article-tag-link.tagID GROUP BY articles.articleID LIMIT 3;

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

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

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

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);