我正在尝试在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上绘画。有没有更好的办法?或者有人能告诉我出了什么问题吗?
由于
答案 0 :(得分:1)
由于您只有一个子窗口小部件,因此消除布局更简单。改变这些行:
layout->addWidget(labeltime);
ui->overview->setLayout(layout);
为:
ui->overview->setWidget(labeltime);