新建的QImage不显示
主界面包含一个QTabWidget.希望可以手动建立多个QWidget,然后将这些QWidget添加到QTabWidget,作为一个新的页来显示里面的QImage.
由于QImage的大小不确定,所以我用QScrollArea来显示QImage.
PaintArea::PaintArea(QWidget *parent) :
QWidget(parent)
{
image = QImage(20000, 500, QImage::Format_RGB32);
backColor = qRgb(128, 128, 128);
image.fill(backColor);
paint(image);
}
void PaintArea::paint(QImage &theImage)
{
QPainter pp(&theImage); //在theImage上绘图
pp.drawLine(lastPoint,endPoint); //由起始坐标和终止坐标绘制直线
lastPoint = endPoint; //让终止坐标变为起始坐标
update(); //进行更新界面显示,可引起窗口重绘事件,重绘窗口
}
void PaintArea::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawImage(0, 0, image);
}
主程序:
void MainWindow::display_area_init()
{
...
QWidget *tab;
tab = create_tab_widget(); // 新建 “页” 表
ui->tabWidget->addTab(tab, tr(" * ")); // 将新建 “页” 表添加到tabWidget
...
}
QWidget *MainWindow::create_tab_widget()
{
QWidget *tab;
QHBoxLayout *horizontalLayout;
QScrollArea *scrollArea;
PaintArea *scrollAreaWidgetContents;
QSizePolicy sizePolicy_E(QSizePolicy::Expanding, QSizePolicy::Expanding);
sizePolicy_E.setHorizontalStretch(0);
sizePolicy_E.setVerticalStretch(0);
tab = new QWidget();
tab->setObjectName(QString::fromUtf8("tab"));
scrollAreaWidgetContents = new PaintArea();
scrollAreaWidgetContents->setObjectName(QString::fromUtf8("scrollAreaWidgetContents"));
scrollAreaWidgetContents->setGeometry(QRect(0, 0, 800, 600));
sizePolicy_E.setHeightForWidth(scrollAreaWidgetContents->sizePolicy().hasHeightForWidth());
scrollAreaWidgetContents->setSizePolicy(sizePolicy_E);
scrollArea = new QScrollArea(tab);
scrollArea->setObjectName(QString::fromUtf8("scrollArea"));
sizePolicy_E.setHeightForWidth(scrollArea->sizePolicy().hasHeightForWidth());
scrollArea->setSizePolicy(sizePolicy_E);
scrollArea->setFrameShape(QFrame::NoFrame);
scrollArea->setWidget(scrollAreaWidgetContents);
horizontalLayout = new QHBoxLayout(tab);
horizontalLayout->setSpacing(0);
horizontalLayout->setContentsMargins(0, 0, 0, 0);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
horizontalLayout->addWidget(scrollArea);
return tab;
}
现在的问题是:当我第一次手动建立新页时,可以出现一个长宽为20000*500的灰色底色的QImage.当我再想建立一个新的页面时,新页面却显示不了这个长宽为20000*500的灰色底色的QImage.当我把第一个已经成功显示的灰色底色的QImage的页,删除掉delete (ui->tabWidget->currentWidget());后面再生成新的页就可以正常显示灰底的QImage,而且还是只能显示一个这样的页面。
请问这个问题是什么原因造成的?该怎么解决让多个QImage页都可以正常显示?