首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在qt中更改一个QBarSet条/元素的颜色?

如何在qt中更改一个QBarSet条/元素的颜色?
EN

Stack Overflow用户
提问于 2018-05-29 20:45:42
回答 1查看 3.8K关注 0票数 4

我将QBarSethovered信号连接到一个插槽上,当鼠标悬停在设置的条上时,它会改变QBarSet颜色,并在鼠标离开时重新设置颜色。

代码片段如下所示:

代码语言:javascript
运行
复制
void BarChart::hoverTest(bool status, int index)
{
    if(status == true) {
        set->setColor(Qt::red); //changes to bar set color to red mouse when hovers on bar set
    }
    else {
        set->setColor(QColor(52, 152, 219)); //reset the color when mouse leaves
    }
}

这些是悬停前和悬停时的照片:

正如您所看到的,如果我将鼠标悬停在条形图上,所有的条形图(元素)颜色都会变为红色。但我希望将鼠标悬停在条形图集合中的特定条形图(元素)上,该条形图(元素)会更改其颜色,而其余的保持不变。

有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 01:48:06

目前还不能单独更改列的颜色,因此我将介绍一种解决方法。这包括在悬停项目的顶部放置一个新项目,如下所示:

代码语言:javascript
运行
复制
#include <QApplication>
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QChartView w;

    QBarSet *set0 = new QBarSet("bar1");

    *set0 << 1 << 4 << 3 << 7 << 2 << 5 << 1 << 3 << 3 << 2 << 1 << 6 << 7 << 5;

    QBarSeries *series = new QBarSeries;
    series->append(set0);

    QChart *chart= new QChart;
    w.setChart(chart);
    chart->addSeries(series);
    w.show();

    QGraphicsRectItem hoverItem;
    hoverItem.setBrush(QBrush(Qt::red));
    hoverItem.setPen(Qt::NoPen);

    QObject::connect(set0, &QBarSet::hovered, [&w, &hoverItem](bool status, int /*index*/){
        QPoint p = w.mapFromGlobal(QCursor::pos());
        if(status){
            QGraphicsItem *it = w.itemAt(p);
            hoverItem.setParentItem(it);
            hoverItem.setRect(it->boundingRect());
            hoverItem.show();
        }
        else{
            hoverItem.setParentItem(nullptr);
            hoverItem.hide();
        }
    });
    return a.exec();
}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50584771

复制
相关文章

相似问题

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