找回密码
 立即注册
Qt开源社区 门户 查看内容

Qt编程笔记三

2019-2-9 08:35| 发布者: admin| 查看: 1002| 评论: 0

摘要: 作者:前行中的Qt猪 不积跬步,无以致千里;不积小流,无以成江河。每天一记,不在乎多少;每天一结,重在勤思考。写写代码,轻松又愉快;写写文章,总结每一天。1、图片保持横纵比例进行缩放2、去除窗口部件的系统 ...
作者:前行中的Qt猪

不积跬步,无以致千里;不积小流,无以成江河。

每天一记,不在乎多少;每天一结,重在勤思考。

写写代码,轻松又愉快;写写文章,总结每一天。



1、图片保持横纵比例进行缩放

2、去除窗口部件的系统焦点边框



1、图片保持横纵比例进行缩放



QPixmap getScalePixmap(QPixmap pixTmp, QSize imageSize){    int nTmpWidth = imageSize.width();    int nTmpHeight = imageSize.height();    QSize sizeImage = pixTmp.size();
   if (sizeImage.width() > nTmpWidth || sizeImage.height() > nTmpHeight)    {
       if (sizeImage.width() > sizeImage.height())        {            pixTmp = pixTmp.scaledToWidth(nTmpWidth, Qt::SmoothTransformation);
           if (pixTmp.height() > nTmpHeight)    { pixTmp = pixTmp.scaledToHeight(nTmpHeight, Qt::SmoothTransformation);    } }
else {    pixTmp = pixTmp.scaledToHeight(nTmpHeight, Qt::SmoothTransformation);
           if (pixTmp.width() > nTmpWidth)    {       pixTmp = pixTmp.scaledToWidth(nTmpWidth, Qt::SmoothTransformation);    } }
   }    return pixTmp;}





虽然Qt提供了三种参数进行缩放,但是仍然会有各种问题。


pixmap.scaled(this->size(imageSize), Qt::AspectRatioMode);




根据控件自身大小进行缩放,比例会失调。下面是默认Qt::IgnoreAspectRatio,使用Qt::KeepAspectRatio参数可以保证长度大于宽度的图片放缩正常;反之,显示效果也会比例失调。更别说Qt::KeepAspectRatioByExpanding参数会尽量放大图片,会导致图片显示不全,所以使用上述代码可以解决此问题。






2、去除窗口部件的系统焦点边框

使用下面代码去除窗口部件的系统焦点边框;

class MyProxyStyle : public QProxyStyle

{

public:

    virtual void drawPrimitive(PrimitiveElement element, const QStyleOption * option,

        QPainter * painter, const QWidget * widget = 0) const

    {

        if (PE_FrameFocusRect == element)

        {

            //这里不做任何操作,Qt默认是绘制矩形虚线框

        }

        else

        {

            QProxyStyle::drawPrimitive(element, option, painter, widget);

        }

    }

};

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    qApp->setStyle(new MyProxyStyle);

    MainWindow w;

    w.show();   

    return a.exec();

}


-------------------------------------------------------------------------
我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。
-------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了