标签: qtcharts

如何从QChartView或QChart中删除边距

所有Qt图表似乎都有边距和圆角.

带红色标记边框的示例图像

如何删除?

我希望白色区域填满整个对话框.我在Qt文档中找不到任何信息.我找到了一个没有这个间距的示例的屏幕截图.但我找不到禁用它的代码.

我的初始化代码如下所示:

QPieSeries *series = new QPieSeries();
series->append("Jane", 1);
series->append("Joe", 2);
series->append("Andy", 3);
series->append("Barbara", 4);
series->append("Axel", 5);

QChart *chart = new QChart();
chart->addSeries(series);

QChartView *chartView = new QChartView(chart);
chartView->setBackgroundBrush(Qt::red);
chartView->setRenderHint(QPainter::Antialiasing);

QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
Run Code Online (Sandbox Code Playgroud)

qt qtcharts

13
推荐指数
2
解决办法
5384
查看次数

如何在QtCharts中自动重新缩放轴?

我正在使用QtCharts.

我需要在追加值后重新调整两个轴.我附加的值不在0和1之间,也不是从1970年开始.

QtChart轴错误缩放

我的对话框的构造函数代码如下所示:

m_series = new QLineSeries;
m_series->setName(name);

auto chart = new QChart;
chart->legend()->setVisible(false);
chart->addSeries(m_series);

m_axisX = new QDateTimeAxis;
//m_axisX->setFormat("HH:mm:ss");
m_axisX->setTitleText(tr("Zeitpunkt"));
chart->addAxis(m_axisX, Qt::AlignBottom);

m_series->attachAxis(m_axisX);

auto axisY = new QValueAxis;
axisY->setTitleText(unit);
chart->addAxis(axisY, Qt::AlignLeft);

m_series->attachAxis(axisY);

auto chartView = new QChartView(chart, this);
chartView->setRenderHint(QPainter::Antialiasing);
Run Code Online (Sandbox Code Playgroud)

我的MainWindow发出包含新值的信号.多个打开的图表对话框连接到该信号.

void ChartDialog::liveUpdate(const RealTimeMeasureRegisters &registers)
{
    auto result = ((&registers)->*m_methodPtr)();

    m_series->append(registers.timestamp(), result);
}
Run Code Online (Sandbox Code Playgroud)

是否有一些简单的方法告诉QDateTimeAxis(在我的情况下m_axisX)自动调整到新值?

QDateTimeAxis :: setRange()看起来不太好,因为我需要设置最小值和最大值.

c++ qt qtcharts

7
推荐指数
1
解决办法
7471
查看次数

在QChartView的轴系统中获取鼠标坐标

有没有办法在绘图区域上获得鼠标坐标QChartView?优选地,在轴单元中.目标是在绘图上移动鼠标时显示鼠标坐标,以便用户可以测量绘制的对象.

我找不到任何内置函数QChartView,所以我试图QChartView::mouseMoveEvent(QMouseEvent *event)用来尝试计算绘图区域中的结果位置.问题是我无法获得绘图区域坐标系的任何参考.我已经尝试过使用了mapToScene,mapToItem而且mapToParent反过来mapFrom...我可以抓住所有对象试图做到这一点,但无济于事.

我发现这QChartView::chart->childItems()[2]确实是绘图区域,不包括轴和轴标签.然后,我可以调用QChartView::chart->childItems()[2]->setCursor(Qt::CrossCursor)十字形仅出现在绘图区域而不是相邻对象上.但是,我尝试的任何东西似乎都没有正确引用这个对象的坐标系.

c++ qt qtcharts

7
推荐指数
1
解决办法
2743
查看次数

从工作线程更新 QtCharts 的正确方法?

因为这是我的第一个问题,所以我想说 StackOverflow 帮助了我无数次。谢谢你。

现在我的问题。我目前正在尝试在 Qt 5.8 中实现一个简单的数据采集应用程序。该应用程序必须与 DSP 通信并以 100Hz 到 10kHz 的速率获取一些电压。由于我需要对获取的电压进行一些额外的计算,因此我认为在与 GUI 线程不同的线程中进行数据获取和操作是个好主意。

数据采集​​和附加计算在单独的线程中工作得很好。我的问题是,使用 QtCharts 异步显示工作线程结果的正确方法是什么?

任何建议将不胜感激。

此致,

克拉斯提夫

c++ multithreading data-acquisition qtcharts qt5.8

6
推荐指数
1
解决办法
981
查看次数

在 QChartView 上实现选择

我想实现基于QChartQChartView的图表选择。这些类的家族有一个很大的优势 -易于使用 openGL动画,例如:

QLineSeries *series = new QLineSeries();
series->setUseOpenGL(true); // <==

QChart *chart = new QChart();
chart->addSeries(series);
chart->setAnimationOptions(QChart::AllAnimations); // <==

QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);    
Run Code Online (Sandbox Code Playgroud)

QChartView类提供了有用的缩放功能- QChartView :: setRubberBand()

chartView->setRubberBand(QChartView::RectangleRubberBand);
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

主要问题是橡皮筋只能用于缩放,但我需要实现它用于不缩放的水平选择,因为该功能通常在音频编辑器中实现: 在此处输入图片说明

现在,当我继承 QChartView 时,我可以在选择后禁用缩放:

class ChartView : public QChartView
...
bool m_drawRubberBand;
QRubberBand m_rubberBand;
...

ChartView::ChartView(QChart *chart, QWidget *parent) 
    : QChartView(chart, parent)
{
    setRubberBand(QChartView::HorizontalRubberBand);
}
...

// Just copy-paste from the Qt 5 sources - file \Src\qtcharts\src\charts\qchartview.cpp:
/*! …
Run Code Online (Sandbox Code Playgroud)

plot qt qt5 qtcharts qchart

6
推荐指数
1
解决办法
3294
查看次数

如何重新绘制QChart

我想知道如何QChart在添加新点后添加新点QLineSeries. 目标是使用它来显示以高速率(高达400 000点/秒)采集的数据,并在点到达数据包时更新绘图.

这是我一直在研究的测试程序:

主窗口:

class MainWindow : public QMainWindow{
    Q_OBJECT

    QLineSeries *series;
    QChart *chart;
    QChartView *chartView;

    int cnt=0;


public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pB_Start_clicked();

private:
    Ui::MainWindow *ui;
};
Run Code Online (Sandbox Code Playgroud)

MainWindow构造函数:

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

    series = new QLineSeries();

    chart = new QChart();
    chart->setBackgroundRoundness(0);

    chart->addSeries(series);

 // A bunch of formatting
    chart->setBackgroundVisible(false);
    chart->setMargins(QMargins(0,0,0,0));
    chart->layout()->setContentsMargins(0,0,0,0);
    chart->legend()->hide();
    chart->setPlotAreaBackgroundBrush(QBrush(Qt::black));
    chart->setPlotAreaBackgroundVisible(true);
    chartView = new QChartView(chart);
    ui->gridLayout->addWidget(chartView);

}
Run Code Online (Sandbox Code Playgroud)

还有一个pushButton clicked事件可以为系列添加点数:

void MainWindow::on_pB_Start_clicked(){
    series->append(cnt,qSin(cnt/10));
    cnt++; …
Run Code Online (Sandbox Code Playgroud)

c++ qt qtcharts

5
推荐指数
1
解决办法
7772
查看次数

如何更改QLineSeries的z索引?

有什么方法可以为添加到QChart的某些QAbstractSeries订购z-index?看来QChart是在内部完成的。

qt qtcharts

5
推荐指数
1
解决办法
406
查看次数

如何在 Windows 上安装 &lt;QtCharts&gt;

我很难让 QtCharts 在我的电脑上工作。我想我错过了这个概念。我的电脑上安装了 Qt 5.8。我正在使用 Visual Studio 进行所有开发。谷歌搜索一段时间后,我注意到有人说你需要导入 QtChart 模块,但我不明白:

1) 为什么 QtCharts 不是我 Qt 安装的一部分?

2)如果我必须安装它,我该如何在带有 VS 2017 的 Windows 上安装它?

如果有人可以帮我解决这个问题,我将不胜感激。

谢谢你。

c++ qt visual-studio qtcharts

5
推荐指数
1
解决办法
5555
查看次数

在qml中的qtcharts上拖动一个点

我正在尝试在 qtcharts 上拖动 LineSeries 上的一个点。这是我的代码:

import QtQuick 2.0
import QtCharts 2.0

Item {
    anchors.fill: parent

    ChartView {
        title: "Two Series, Common Axes"
        anchors.fill: parent

        ValueAxis {
            id: axisX
            min: 0
            max: 10
            tickCount: 5
        }

        ValueAxis {
            id: axisY
            min: -0.5
            max: 1.5
        }

        LineSeries {
            id: series1
            axisX: axisX
            axisY: axisY
            onPressed: console.log("Pressed: " + point.x + ", " + point.y);   
            onReleased: console.log("Released: " + point.x + ", " + point.y);
        }


    }
    // Add data dynamically to the …
Run Code Online (Sandbox Code Playgroud)

qt qml qt5 qtcharts

5
推荐指数
1
解决办法
2847
查看次数

如何获取 QtChart QLineSeries 中的轴标签

我能够使用 Python 中的 QtCharts 库生成图表,但我似乎不知道如何向我的图表添加轴标签...

我看到了 QValueAxis 的 setLabelFormat() 功能,但没有看到如何设置文本本身。我确信我缺少一些简单的东西。

这是我必须生成图表的代码:

def plotLossesChart(self):

      set0 = QBarSet('Conduction Loss')
      set1 = QBarSet('Switching Loss')

      set0.append([random.randint(0, 10) for i in range(5)])
      set1.append([random.randint(0, 10) for i in range(5)])

      series = QStackedBarSeries()
      series.append(set0)
      series.append(set1)

      chart = QChart()
      chart.addSeries(series)
      chart.setTitle('Loss Summary')
      chart.setAnimationOptions(QChart.SeriesAnimations)

      months = ('Upper FET', 'Lower FET', 'Driver', 'Inductor', 'Cap ESR')

      axisX = QBarCategoryAxis()
      axisX.append(months)

      axisY = QValueAxis()
      axisY.setRange(0, 15)

      chart.addAxis(axisX, Qt.AlignBottom)
      chart.addAxis(axisY, Qt.AlignLeft)

      chart.legend().setVisible(True)
      chart.legend().setAlignment(Qt.AlignBottom)

      return chart

def plotEfficiencyChart(self):

      series = QLineSeries()

      load = [0, …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt5 qtcharts

5
推荐指数
1
解决办法
6439
查看次数

标签 统计

qtcharts ×10

qt ×8

c++ ×5

qt5 ×2

data-acquisition ×1

multithreading ×1

plot ×1

pyqt ×1

pyqt5 ×1

python ×1

qchart ×1

qml ×1

qt5.8 ×1

visual-studio ×1