最近做个小界面,之前有用过qchart虽然比qwt好用一点,但是bug还是有那么些,总体还行吧。当前想实现的功能就是讲数据以柱状图的形式实现,并且在柱状图的顶部显示每个柱状图的数据,同时提供Tooltip功能。那么就开始说说如何创建吧。
1、首先定义实现qchart对象
m_char=new QChart();
m_char->setAnimationOptions(QChart::SeriesAnimations);//动画显示
2、接下来,定义实现 QBarSeries对象,记住一定要在构造函数中加m_char,这个对象实际上理解为就是你X轴S1,1、3号线的集合,
m_series=new QBarSeries(m_char);
3、然后就是建立XY轴了,
m_typeAxis = new QBarCategoryAxis();
//m_typeAxis->append(categories);
m_char->createDefaultAxes();//创建默认的左侧的坐标轴(根据 QBarSet 设置的值)
m_char->setAcceptTouchEvents(true);
m_char->setAxisX(m_typeAxis, m_series);//设置坐标轴
m_typeAxisY = new QValueAxis;
m_typeAxisY->setRange(0, 40);
// m_typeAxisY->setTickCount(10); //设置多少格
//m_typeAxisY->setMinorTickCount(5); //设置每格小刻度线的数目
m_char->setAxisY(m_typeAxisY, m_series);
4、生成 QChartView对象,将m_char加入其中;
m_mybarView=new QChartView(m_char);
m_mybarView->setRenderHint(QPainter::Antialiasing);
5、将m_mybarView这个对象加入到你得布局当中即可。
m_barview=new MyBarView(bvp);
ui->barChartView->addWidget(m_barview->m_mybarView);
6、如果你要tooltip功能,你需要使用这样的信号与槽,
connect(m_series, SIGNAL(hovered(bool, int, QBarSet*)), this, SLOT(sltTooltip(bool, int, QBarSet*)));
void MyBarView::sltTooltip(bool status, int index, QBarSet *barset)
{
if (m_tooltip == 0)
m_tooltip = new ChartTip(m_char);
if (status) {
int yindex=m_barSetList.indexOf(barset);
double indexbarset=m_barSetList.indexOf(bars