问题描述:
我有个QT程序,在主窗口上点击“显示图片”就会弹出ScrollArea的窗口,ScrollArea里面有个label,set_image函数是在这个窗口中显示图片
如下是显示图片的程序。
但是现在问题来了,每一次显示图片,窗口都是和我用ui画的那个text label一样大,显示不完全图片
请问怎么改才能让这个text label能自适应图片大小来完整显示图片
回答:
voidMainWindow::Show_Image_byname(char*filename)
{
if(!filename || !strlen(filename))
{
return;
}
charbuf[128]= {0};
strcpy(buf,SAVE_IMAGE);
strcat(buf,filename);
ScrollArea *new_image = newScrollArea();
new_image->set_image(buf);
new_image->setBackgroundRole(QPalette::Dark);
new_image->show();
return;
}
在scrollarea.h中添加私有变量QLabel
private:
Ui::ScrollArea *ui;
QLabel * label;
析构函数中添加释放QLabel的空间
ScrollArea::~ScrollArea()
{
deleteui;
if(label)
{
deletelabel;
}
}
实现函数
voidScrollArea::set_image(char*filename)
{
QImage *ppm = newQImage(filename);
label = newQLabel();
//ui->label->resize(ppm->width(), ppm->height());
label->setPixmap(QPixmap::fromImage(*ppm));
ui->scrollArea->setWidget(label);
return;
}
其他回答请见: http://bbs.csdn.net/topics/390579138