QT QPixmap не будет прокручивать в QScrollArea

Я пытаюсь нарисовать с помощью QPainter в QPixmap, поместить этот 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. Есть ли способ лучше? Или может кто-нибудь сказать мне, что не так?

Спасибо

1

Решение

Поскольку у вас есть только один дочерний виджет, проще избавиться от макета. Измените эти строки:

layout->addWidget(labeltime);
ui->overview->setLayout(layout);

чтобы:

ui->overview->setWidget(labeltime);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]