c++ - Qt:制作不同颜色的堆叠条形图

标签 c++ qt colors qpainter qtgui

<分区>

我正在尝试在 Qt 中制作时间线,其中不同的颜色代表不同的任务。 最终,它看起来应该有点像这样(但只有一行);

stacked

现在有人知道如何在不安装额外库的情况下使用 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/

相关文章:

c++ - eclipse : Error: init mode failed (unable to connect to the target)

c++ - 尝试使用 Qt 库中的 QPixmap 将图像分成几个 block 。他的复制方法的工作方式有什么我不明白的吗?

c++ - 使用 QtConcurrent::run 在单独的线程上连接信号/插槽

python - 根据部分标签更改饼图的颜色(pandas/matplotlib)

c++ - 如何查找 QTextEdit 中显示的数据长度

c++ - Emacs 24 前奏。 .emacs 冲突?

c++ - 整数散列问题

c++ - QSqlDriver::close 使应用程序崩溃

svg - 如何用 svg 渐变插入色调?

javascript - 散点图 html5/javascript 库,允许为每个点设置颜色和 alpha