有没有办法为我添加到 QChart 的一些 QAbstractSeries 订购 z-index?似乎 QChart 在内部执行此操作。
2 回答
2
Zlevel由QtCharts::ChartItem
存储在隐藏在QtChartQtCharts::ChartPresenter
的私有部分中的设置。我们可以通过应用该方法来实现它。findChild()
ChartPresenter
有一种方法来获取它的项目,但您需要知道如何区分它们(因为名称被分配给一个系列。)我为此目的使用了 opacity 属性。请记住,在分配新的z level时,场景可能会更低(例如Legend。)
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); }
}
}
于 2020-08-06T14:46:46.623 回答