首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改变QLineSeries的z指数?

如何改变QLineSeries的z指数?
EN

Stack Overflow用户
提问于 2017-02-05 11:26:49
回答 2查看 934关注 0票数 7

有没有办法为我添加到QAbstractSeries中的一些QChart排序z索引?QChart似乎是在内部完成这一任务。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-12 12:37:14

问题是Q*Series实现生成独立的QGraphicsItem,这些都隐藏在系列的私人执行中。从外面进入他们是不容易的。

理论上,您可以通过场景对象(例如QGraphicsScene::items())找到它们。不过,我看不出有什么好办法来辨认他们。

作为参考,您可以找到问题中的这里类。

票数 0
EN

Stack Overflow用户

发布于 2020-08-06 14:46:46

ZlevelQtCharts::ChartItem设置,存储在QtCharts::ChartPresenter中,隐藏在QtChart的私有部分。我们可以通过应用findChild()方法来达到这个目的。

ChartPresenter有一个获取其项的方法,但是您需要知道如何区分它们(因为名称分配给了一个系列)。为此,我使用了不透明属性。请记住,当分配一个新的z级别的时,场景可能会更低(例如,图例)。

代码语言:javascript
复制
void AppDispatcher::setZLevel(QtCharts::QXYSeries *series)
{
    QtCharts::ChartPresenter* present = series->chart()->findChild<QtCharts::ChartPresenter*>();
    Q_ASSERT(present);

    QList<QtCharts::ChartItem *> items = present->chartItems();

    for(QtCharts::ChartItem * item : items){
        if(item->opacity() == 0.99) { item->setZValue(QtCharts::ChartPresenter::ZValues::SeriesZValue+3); item->setOpacity(1); }
        if(item->opacity() == 0.98) { item->setZValue(QtCharts::ChartPresenter::ZValues::SeriesZValue+2); item->setOpacity(1); }
        if(item->opacity() == 0.97) { item->setZValue(QtCharts::ChartPresenter::ZValues::SeriesZValue+1); item->setOpacity(1); }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42051493

复制
相关文章

相似问题

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