首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt -在QDialog窗口中显示QChartView

Qt -在QDialog窗口中显示QChartView
EN

Stack Overflow用户
提问于 2017-02-27 04:11:56
回答 3查看 2.7K关注 0票数 1

我一直在跟踪this example,尝试在QDialog窗口中创建折线图。而不是使用以下命令将图表添加到UI:

代码语言:javascript
复制
window.setCentralWidget(chartView);

我用下面这行代码将它添加到UI中:

代码语言:javascript
复制
QChartView *chartView = new QChartView(chart, ui->widget_chart);

我在UI文件中添加了一个名为widget_chart的QWidget,并应用了水平布局。图表是显示的,但它非常小。我原本期望通过应用布局,图表将占据整个窗口的宽度。如果我调整窗口大小,它将动态调整大小。

Screenshot of program

如何才能使图表占据整个QWidget的宽度?

下面是我的dialog.cpp文件的完整代码:

代码语言:javascript
复制
#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;
}
EN

回答 3

Stack Overflow用户

发布于 2017-11-22 01:00:16

Wojciech Pi tek的答案对我很有效。就A_Noonan而言,您唯一需要更改的就是找出ui文件中的主布局,并像这样引用它

代码语言:javascript
复制
ui->main_layout->addWidget(chartView);

在这里,您应该将main_layout更改为您的布局名称。同样,通过这种方式,您不需要使用以下代码行:

代码语言:javascript
复制
QChartView *chartView = new QChartView(chart, ui->widget_chart);

现在,你可以使用常规的了。

代码语言:javascript
复制
QChartView *chartView = new QChartView(chart);

还要确保从ui_file中删除widget_chart。没有其他方法可以绕过这一点。

票数 0
EN

Stack Overflow用户

发布于 2018-10-14 21:07:33

只需更改图表视图的大小,我使用的是PyQt5,但我认为它们具有相同的库语法。

代码语言:javascript
复制
    chartView = QChartView(chart, self)
    chartView.setRenderHint(QtGui.QPainter.Antialiasing)
    chartView.resize(self.size())

    mainLayout = QVBoxLayout()
    mainLayout.addWidget(chartView, 5)

您可以使用'this‘操作符,而不是使用self。

代码语言:javascript
复制
    chartView.resize(this->size())
票数 0
EN

Stack Overflow用户

发布于 2017-11-16 15:24:57

我也遇到过类似的问题。我用布局解决了这个问题。为您的QWidget创建布局,然后使用addWidget函数添加QChartView

代码语言:javascript
复制
your_layout->addWidget(chartView)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42473671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档