QT QPixmap不会在QScrollArea中滚动

时间:2013-12-29 15:21:44

标签: c++ qt qpainter qtgui qscrollarea

我正在尝试在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上绘画。有没有更好的办法?或者有人能告诉我出了什么问题吗?

由于

1 个答案:

答案 0 :(得分:1)

由于您只有一个子窗口小部件,因此消除布局更简单。改变这些行:

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

为:

ui->overview->setWidget(labeltime);