مکان فعلی شما: :», سی پلاس پلاس C++, کیوت, کیوت Qt»نمایش svg با کیفیت در QLabel

نمایش svg با کیفیت در QLabel

نمایش svg با کیفیت بالا در سایزهای مختلف

یکی از مشکلاتی که قبلا باهاش دست و پنجه نرم کرده بودم ولی خب حل شده بود این بود که بتونم svg رو با کیفیت بالا رندر بگیرم روی QLabel .

چون اگر باهاش کار کرده باشید با روش عادی نمیشه کیفیت بالا گرفت و High Resolution نیست! درنتیجه خواستم نحوه اینکارو اینجا بگم شاید به درد بقیه هم خورد:

High resolution SVG on QLabel in Qt

//IconLabel is subclass of QLabel
//Note: if you wanna keep Quality , you should create pixmap for all sizes (so override resizeEvent !)
// this method is working normally
QPixmap IconLabel::FromSvgToPixmap(const QString &SvgFile,
                                   const QSize &ImageSize) {
  QSvgRenderer SvgRenderer(SvgFile);
  QPixmap Image(ImageSize);
  QPainter Painter;

  Image.fill(Qt::transparent);

  Painter.begin(&Image);
  SvgRenderer.render(&Painter);
  Painter.end();

  return Image;
} 
QPixmap IconLabel::FromSvgToPixmap(const QSize &ImageSize,
                                   const QString &SvgFile) {
  const qreal PixelRatio = qApp->primaryScreen()->devicePixelRatio();
  QSvgRenderer SvgRenderer(SvgFile);
  QPixmap Image(ImageSize * PixelRatio);
  QPainter Painter;

  Image.fill(Qt::transparent);

  Painter.begin(&Image);
  SvgRenderer.render(&Painter);
  Painter.end();

  Image.setDevicePixelRatio(PixelRatio);

  return Image;
}

درضمن اگر احیانا خواستید که QLabel رو End User بتونه تغییر اندازه بده حتما متد  resizeEvent رو براش override کنید.

امیدوارم که استفاده کرده باشید ، هرسوالی بود همین پایین تو دیدگاه ها بنویسید پاسخگو هستم.
مرجع: Render SVG on QLabel

نظر یادتون نره !

خب تا انتهای این آموزش امیدوارم به خوبی هر چی رو که بوده گفته باشیم و شما به راحتی فهمیده باشید. اگر کمی گنگ بود و یا مشکلاتی داشت و هر نوع انتقاد یا پیشنهادی و سوالی داشتید می توانید در انتهای همین صفحه در قسمت نظرات بیان کنید . خیلی متشکریم بابت وقتی که گزاشتید و  اچ کدینگ رو دنبال کردید.
برای اینکه خستگی از تن ما در بره می تونید ما رو به دوستانتون معرفی کنید (با به اشتراک گذاری) تا برای ما روحیه مثبتی بشه که در آموزش های آتی بهتر عمل کنیم.

توسط | ۱۴۰۰-۱۱-۲۶ ۰۹:۰۴:۵۷ +۰۰:۰۰ ۲۶ام بهمن, ۱۴۰۰|Qt, سی پلاس پلاس C++, کیوت, کیوت Qt|

درباره نویسنده:

به امید تحول!

یک نظر

  1. Moh3en ۱۴۰۱-۱۲-۰۱ at ۱۱:۴۵ - پاسخ

    از این که اینو توی یه سایت ایرانی دیدم خیلی تعجب کردم و واقعا خوشحال کننده بود. عجیبم بود که بهش رسیدم توی یه سایت ایرانی
    مجکرم

یک نظر بنویسید