当鼠标在Qt上盘旋时,如何在其上设置QBarSet的标签?

时间:2018-06-13 15:00:27

标签: c++ qt qt5

我做了一个简单的水平堆叠条:

enter image description here

如您所见,我将系列标签设置为可见,因此它可以显示所有堆叠条的值。那些条形图的名称如Bar 0, Bar 1...高于图表。

代码如下:

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

    QHorizontalStackedBarSeries *series = new QHorizontalStackedBarSeries();
    series->setLabelsVisible(true); //make sure the bar set value is visiable
    for(int i = 0; i < 5; ++i) {
        QBarSet *barSet = new QBarSet("Bar " + QString::number(i)); //name the bar set
        barSet->append(i + 1); //append value to bar set
        series->append(barSet);

        connect(barSet, &QBarSet::hovered, this, &Widget::getSetName);
    }

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

    QChartView *chartView = new QChartView(chart);

    ui->verticalLayout->addWidget(chartView);
}

当鼠标悬停在条形集上时,我希望它的名称显示在条形集上以替换它的值。但是目前我只知道当鼠标悬停在它上面时如何获得它的名字。

void Widget::getSetName(bool status, int)
{
    if(status) {
        QBarSet *barSender = qobject_cast<QBarSet *>(sender());
        qDebug() << barSender->label(); //get hovered bar set name
    }
}

所以我的问题是当鼠标悬停在它上面时我如何将条形图的值替换为它的名字?

0 个答案:

没有答案