前言
QtCharts的基本用法可以参考:QtCharts 饼图的基本用法 (感谢~~)
如上述链接博主运行结果所示:
- 单击一个扇形切片可以使该扇形切片弹出,但是要收回需要再次单击该切片。
- 当依次单击每个扇形切片后,所有扇形都呈弹出状态,想要收回则需要依次再次单击每个切片。
对于第2点个人感觉有点麻烦,以下代码通过在原有槽函数的基础上获取了饼图的所有扇形切片列表,并默认设置每个切片弹出状态为false,然后再设置当前单击的切片的弹出状态。
//.h
QPieSeries *m_PieSeries;//.cpp
void ChartWidget::onPieSeriesClicked(QPieSlice* slice)
{// 只弹出一个扇形bool bExploded = slice->isExploded();QList<QPieSlice*> PieSliceList = m_PieSeries->slices();for (int i = 0; i < PieSliceList.size(); ++i){PieSliceList.at(i)->setExploded(false);}slice->setExploded(!bExploded);
}
效果
- 同样的单击弹出一块扇形切片,再次单击该切片会收回;
- 单击弹出一块扇形切片A后,再单击另外一块切片B,则切片A将自动收回,切片B将弹出;
性能
对于响应性能肯定会有影响,随着切片数量的增加影响会随之扩大,但当前计算机的性能这点耗时可以忽略不记。
目前想到的方案仅是如此,不惜勿怪,大神请多指教~~