![]() |
爱看书的卤蛋 · 如何在Python中使用子进程运行Power ...· 1 年前 · |
![]() |
有腹肌的鸡蛋 · 打造基于Nginx的敏感信息泄露检测系统 ...· 1 年前 · |
![]() |
文雅的数据线 · 基于Java的RDMA高性能通信库(二):J ...· 1 年前 · |
我将
QBarSet
的
hovered
信号连接到一个插槽上,当鼠标悬停在设置的条上时,它会改变
QBarSet
颜色,并在鼠标离开时重新设置颜色。
代码片段如下所示:
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
}
这些是悬停前和悬停时的照片:
正如您所看到的,如果我将鼠标悬停在条形图上,所有的条形图(元素)颜色都会变为红色。但我希望将鼠标悬停在条形图集合中的特定条形图(元素)上,该条形图(元素)会更改其颜色,而其余的保持不变。
有没有办法做到这一点?
发布于 2018-05-30 01:48:06
目前还不能单独更改列的颜色,因此我将介绍一种解决方法。这包括在悬停项目的顶部放置一个新项目,如下所示:
#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{