<分区>
我正在尝试在 Qt 中制作时间线,其中不同的颜色代表不同的任务。 最终,它看起来应该有点像这样(但只有一行);
现在有人知道如何在不安装额外库的情况下使用 QPaint 来做到这一点吗? 它表示的数据存储在自定义结构中。
欢迎任何帮助。
谢谢!
<分区>
我正在尝试在 Qt 中制作时间线,其中不同的颜色代表不同的任务。 最终,它看起来应该有点像这样(但只有一行);
现在有人知道如何在不安装额外库的情况下使用 QPaint 来做到这一点吗? 它表示的数据存储在自定义结构中。
欢迎任何帮助。
谢谢!
最佳答案
您似乎需要类似下面的代码,但请注意它只是伪代码,具体细节在很大程度上取决于您如何从尚未与我们共享的数据结构中获取数据。
...
QPainter *painter = new QPainter(MyPaintDevice); // MyPaintDevice could be even 'this'
QPen pen(Qt::gray, 2);
painter->setPen(pen);
int currentX = 0;
const int currentY = 0;
const int height = hardCodedValue; // Coming from some static data initialization
foreach (const Settings& settings, settingsList) {
QBrush brush(QColor(settings.colorString()));
painter->setBrush(brush);
painter->drawRect(currentX, currentY, settings.width(), height);
currentX += settings.width();
}
...
不可否认,出于多种原因,您最好选择 QML 而不是旧的 QPainter
引擎。现在是硬件加速,而不是像 QPainter
方法那样的软件光栅化,但对您来说可能更重要:它更简单。
您需要查看 native Rect qml element ,可能还有 Repeater .
关于c++ - Qt:制作不同颜色的堆叠条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20801622/