我一直在跟踪this example,尝试在QDialog窗口中创建折线图。而不是使用以下命令将图表添加到UI:
window.setCentralWidget(chartView);我用下面这行代码将它添加到UI中:
QChartView *chartView = new QChartView(chart, ui->widget_chart);我在UI文件中添加了一个名为widget_chart的QWidget,并应用了水平布局。图表是显示的,但它非常小。我原本期望通过应用布局,图表将占据整个窗口的宽度。如果我调整窗口大小,它将动态调整大小。
如何才能使图表占据整个QWidget的宽度?
下面是我的dialog.cpp文件的完整代码:
#include "dialog.h"
#include "ui_dialog.h"
#include <QtCharts>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
QLineSeries *series = new QLineSeries();
series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");
QChartView *chartView = new QChartView(chart, ui->widget_chart);
chartView->setRenderHint(QPainter::Antialiasing);
}
Dialog::~Dialog()
{
delete ui;
}发布于 2017-11-22 01:00:16
Wojciech Pi tek的答案对我很有效。就A_Noonan而言,您唯一需要更改的就是找出ui文件中的主布局,并像这样引用它
ui->main_layout->addWidget(chartView);在这里,您应该将main_layout更改为您的布局名称。同样,通过这种方式,您不需要使用以下代码行:
QChartView *chartView = new QChartView(chart, ui->widget_chart);现在,你可以使用常规的了。
QChartView *chartView = new QChartView(chart);还要确保从ui_file中删除widget_chart。没有其他方法可以绕过这一点。
发布于 2018-10-14 21:07:33
只需更改图表视图的大小,我使用的是PyQt5,但我认为它们具有相同的库语法。
chartView = QChartView(chart, self)
chartView.setRenderHint(QtGui.QPainter.Antialiasing)
chartView.resize(self.size())
mainLayout = QVBoxLayout()
mainLayout.addWidget(chartView, 5)您可以使用'this‘操作符,而不是使用self。
chartView.resize(this->size())发布于 2017-11-16 15:24:57
我也遇到过类似的问题。我用布局解决了这个问题。为您的QWidget创建布局,然后使用addWidget函数添加QChartView:
your_layout->addWidget(chartView)https://stackoverflow.com/questions/42473671
复制相似问题