• 8808阅读
  • 5回复

QT背景图片 [复制链接]

上一主题 下一主题
离线llllll420984
 
只看楼主 正序阅读 楼主  发表于: 2010-11-10
— 本帖被 XChinux 从 其它技术开发讨论区 移动到本区(2011-01-05) —
关键词: QT4
[pre]在qt中,我想达到的效果是:将背景图片插入到mainwindows中,并且背景图片的大小可以随着窗口的大小的变化而改变,始终占据整个窗口,请问应该怎么办??QPalette pal;    pal.setBrush(this->backgroundRole(),QBrush(QPixmap("background.bmp")));    this->setPalette(pal);    this->setAutoFillBackground(true);这样做达不到效果 ,[pre]放大后显示出来的是接近四幅图啊,而且缩小窗口会遮住一部分的图片背景。[/pre][pre]本人刚学QT,请高手教我!!![/pre][/pre]
离线yulitingfeng
只看该作者 5楼 发表于: 2011-04-20
。。。。。
离线roywillow

只看该作者 4楼 发表于: 2011-04-18
重载resizeEvent,在事件中对图片进行scale,然后再绘制
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线liangxiyi200
只看该作者 3楼 发表于: 2011-04-18
我也这么觉得
实现图片循环滚动要写个类,插入背景图片要写好几行…我不知道是我没找到最简单方法还是本来就是这样?
离线llllll420984
只看该作者 2楼 发表于: 2010-11-16
有方便的方法吗???
离线hqd_2008
只看该作者 1楼 发表于: 2010-11-10
可以考虑使用图片的缩放来做,
我是这样做的,
    resize(((200*m_file_index)%1280),((100*m_file_index)%720));
        update(0,0,width(),height());
{
    Q_UNUSED(pEvent);

    double wscale = 1.0;
    double hscale = 1.0;
    
    double pixwidth = static_cast<double>(m_image.width());
    double pixheight = static_cast<double>(m_image.height());
    double showwidth = static_cast<double>(width());
    double showheight = static_cast<double>(height());

    double Wscalerate = pixwidth / showwidth;
    double Hscalerate = pixheight / showheight;
    double compare = (Wscalerate > Hscalerate ? Wscalerate : Hscalerate);

    QRect _rect( showwidth/2.0 - pixwidth/compare/2.0,
                showheight/2.0- pixheight/compare/2.0,
                pixwidth/compare,
                pixheight/compare);

    QRect _midrect( (showwidth/2.0-pixwidth/2.0),
                   (showheight/2.0-pixheight/2.0),
                   pixwidth,
                   pixheight );

    QPainter painter(this);  

    painter.save();

    painter.translate(showwidth/2.0, (showheight/2.0));
    painter.scale(wscale, hscale);
    painter.translate(-(showwidth/2), -(showheight/2.0));

    if (compare < 1.0)
        painter.drawImage(_midrect, m_image);
    else
        painter.drawImage(_rect, m_image);
    
    painter.restore();
    //QPainter p(this);
    //p.drawImage((SCREEN_WIDTH-m_image.width())/2, (SCREEN_HEIGHT-m_image.height())/2,m_image);
}
快速回复
限100 字节
 
上一个 下一个