1

QPixmap で QPainter を使用して描画し、その QPixmap を QLabel に入れ、その QLabel を QScrollArea に入れようとしています。

ペイントされたピックスマップが ScrollArea の許容範囲よりも大きい場合がありますが、どういうわけか残りを表示するためにスクロールしません。私は何を間違っていますか?

QPixmap *pixmap = new QPixmap(10000,500);
QLabel *labeltime = new QLabel;

QHBoxLayout *layout = new QHBoxLayout;
pixmap->fill(QColor("transparent"));

int currentX = 0;
const int currentY = 220;
const int height = 50; // Coming from some static data initialization

QPainter *painter = new QPainter(pixmap);
QPen pen(Qt::gray, 2);
painter->setPen(pen);

for(int i = 0; i< viewlist.size(); i++)
{
    QBrush brush(QColor(viewlist[i].color));
    painter->setBrush(brush);
    painter->drawRect(currentX, currentY, viewlist[i].length, height);
    currentX += viewlist[i].length;
}

labeltime->setPixmap(*pixmap);
layout->addWidget(labeltime);

ui->overview->setLayout(layout);

これがピックスマップを追加するための長くて奇妙な方法であることはわかっていますが、スクロール可能にしたいのですが、QScrollArea にペイントすることはできません。より良い方法はありますか?または、誰かが何が間違っているのか教えてもらえますか?

ありがとう

4

1 に答える 1