16,213
社区成员
发帖
与我相关
我的任务
分享
void ScrollArea::set_image(char *filename)
{
QImage *ppm = new QImage(filename);
ui->label->setPixmap(QPixmap::fromImage(*ppm));
return;
}
void ScrollArea::set_image(char *filename)
{
QImage *ppm = new QImage(filename);
label = new QLabel();
printf("ppm->width()=%d, ppm->height()=%d\n",ppm->width(), ppm->height()); //获取图片的宽度和高度
label->setPixmap(QPixmap::fromImage(*ppm));
this->setWidget(label);
/*设置窗口最大高度和宽度为1024*768*/
this->setMaximumHeight(768);
this->setMaximumWidth(1024);
this->resize(QSize( ppm->width()+5, ppm->height() +5));
return;
}
这样就可以完美的显示图片了!
void MainWindow::Show_Image_byname(char *filename)
{
if(!filename || !strlen(filename))
{
return;
}
char buf[128]= {0};
strcpy(buf,SAVE_IMAGE);
strcat(buf,filename);
ScrollArea *new_image = new ScrollArea();
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()
{
delete ui;
if(label)
{
delete label;
}
}
实现函数
void ScrollArea::set_image(char *filename)
{
QImage *ppm = new QImage(filename);
label = new QLabel();
//ui->label->resize(ppm->width(), ppm->height());
label->setPixmap(QPixmap::fromImage(*ppm));
ui->scrollArea->setWidget(label);
return;
}
这样就可以实现了!
注意:scrollarea是用ui画出来的,大小固定,需要花两个scrollarea,大小一样,所以代码中出现了ui->scrollarea
但是现在想优化下,如果图片大没问题可以用滚动条显示完全,但是图片过小,就会在左上角显示出来,而其他的空间则是空白,很难看,怎么才能做到,如果图片过小,不能填充完整个scrollarea的空间,就让图片剧中显示?
求教大婶
ui->label->resize(ppm->width(), ppm->height());