作者:前行中的Qt猪 不积跬步,无以致千里;不积小流,无以成江河。 每天一记,不在乎多少;每天一结,重在勤思考。 写写代码,轻松又愉快;写写文章,总结每一天。 1、图片保持横纵比例进行缩放 2、去除窗口部件的系统焦点边框 1、图片保持横纵比例进行缩放 QPixmap getScalePixmap(QPixmap pixTmp, QSize imageSize){ int nTmpWidth = imageSize.width(); int nTmpHeight = imageSize.height(); QSize sizeImage = pixTmp.size(); 虽然Qt提供了三种参数进行缩放,但是仍然会有各种问题。
根据控件自身大小进行缩放,比例会失调。下面是默认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。 ------------------------------------------------------------------------- |