• 9987阅读
  • 5回复

请问如何使QWidget上显示的图片大小和QWidget自适应 [复制链接]

上一主题 下一主题
离线fmli1
 

只看楼主 倒序阅读 楼主  发表于: 2009-12-17
请问如何使QWidget上显示的图片大小和QWidget自适应?
我用QWidget来显示jpg图像,图像可以正常显示出来了,但由于QWidget的大小不足,导致图像部分无法显示,请问怎么让要显示的图像大小自适应QWidget的大小?
谢谢各位了
快乐每一天!
离线dbzhang800

只看该作者 1楼 发表于: 2009-12-17
draw image的时候,获取一下 widget的大小,根据该大小绘制image
离线fmli1

只看该作者 2楼 发表于: 2009-12-17
我是这样子画图的:
.....
  QDir picdir(dir);
    QStringList filters;
    filters << "*.bmp" << "*.jpg" << "*.png"<<"*.gif";
    picdir.setNameFilters(filters);
    QFileInfoList list = picdir.entryInfoList();
    QFileInfo fileInfo = list.at(0);
    QString  path=fileInfo.filePath();
    pixmap.load(path);
....

具体应该怎么改?
快乐每一天!
离线dbzhang800

只看该作者 3楼 发表于: 2009-12-17
引用第2楼fmli1于2009-12-17 16:08发表的  :
我是这样子画图的:
.....
  QDir picdir(dir);
    QStringList filters;
    filters << "*.bmp" << "*.jpg" << "*.png"<<"*.gif";
.......


似乎你这里面一条绘图语句也没有,贴你的 paintEvent 函数
离线fmli1

只看该作者 4楼 发表于: 2009-12-17
引用第3楼dbzhang800于2009-12-17 16:17发表的  :
似乎你这里面一条绘图语句也没有,贴你的 paintEvent 函数




void RenderArea::paintEvent(QPaintEvent * /* event */)
{
    QPainter painter(this);
    if(trans!=0)
    {
        painter.translate(size().width()/2, size().height()/2);
        painter.rotate(90*trans);
       // painter.scale(0.6, 0.9);
       painter.translate(-size().width()/2, -size().height()/2);
    }
    int x=( size().width()-(int)(pixmap.width()*w) )/2;
    int y=( size().height()-(int)( pixmap.height()*h))/2;
    painter.drawPixmap(x,y,(int)(pixmap.width()*w),(int)(pixmap.height()*h),pixmap,0,0,0,0);
}
快乐每一天!
离线dbzhang800

只看该作者 5楼 发表于: 2009-12-17
不需要什么变换
大致
painter.drawPixmap(rect(), pixmap, pixmap.rect());
快速回复
限100 字节
 
上一个 下一个