我一直在关注this example尝试在QDialog窗口中创建折线图。而不是使用以下内容将图表添加到UI:
window.setCentralWidget(chartView);
我正在使用此行将其添加到UI:
QChartView *chartView = new QChartView(chart, ui->widget_chart);
我将一个名为widget_chart的QWidget添加到我的UI文件中并应用了水平布局。图表显示但非常小。我原以为通过应用布局,图表将占据窗口的整个宽度。如果我调整窗口大小,它将动态调整大小。
我怎样才能使图表占据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;
}
答案 0 :(得分:0)
WojciechPią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。 除此之外别无他法。
答案 1 :(得分:0)
只需更改图表视图的大小,我正在使用PyQt5,但我认为它们的库语法相同。
int i = 0;
(dataGridView1.Columns[1] as DataGridViewComboBoxColumn).DataSource = countrys.Select(x=> new {Key = i++, Value = x}).ToList();
(dataGridView1.Columns[1] as DataGridViewComboBoxColumn).DisplayMember = "Value";
(dataGridView1.Columns[1] as DataGridViewComboBoxColumn).ValueMember = "Key";
您将使用'this'运算符,而不是使用self。
chartView = QChartView(chart, self)
chartView.setRenderHint(QtGui.QPainter.Antialiasing)
chartView.resize(self.size())
mainLayout = QVBoxLayout()
mainLayout.addWidget(chartView, 5)
答案 2 :(得分:-1)
我有类似的问题。我使用布局解决了它。为QWidget
创建布局,然后使用QChartView
函数添加addWidget
:
your_layout->addWidget(chartView)