PDA

View Full Version : سوال: استفاده از Animated gif به جای Icon



woeful
جمعه 13 اسفند 1389, 20:33 عصر
سلام

به جای icon با پسوند png. یه animated gif میزارم نشون میده اما هیچ حرکتی نمیکنه ؟؟

آیا به نظر شما استفاده از Animated gif برای loading مناسب هست یا در Qt راه بهتری هست ؟؟


با تشکر
Woeful

.:saeed:.
جمعه 13 اسفند 1389, 21:07 عصر
سلام اگه میخواهید یه فایل .gif رو نمایش بدین باید از یه QLabel استفاده کنید و تابع QLabel::setMovie رو به کار ببرین . ( خودتون هم میتونید این کار و انجام بدین ، یعنی خودتون یه تصویر gif رو بگیرید و نمایشش بر عهده خودتون باشه . اگه نیاز دارین بگید تا بیشتر توضیح بدم ) .
اما راه بهتر و در واقع استاندارد تر برای نمایش یه لودینگ برای یک کاری که زمان انجامش مشخصه استفاده از یک QProgressBar هستش . اما اگه زمانش مشخص نیست ( مثل اتصال به سرور ) از همون QProgressBar استفاده میکنیم با این تفاوت که تابع setRange این QProgressBar رو با مقدار های صفر و صفر صدا میزنیم . این کار باعث میشه که نوار سبز رنگی ( اگه ویندوزتون 7 اه ) از این ور به اون ور بره



QProgressBar *prb = new QProgressBar;
prb->setRange( 0, 0 ); prb->show();

woeful
شنبه 14 اسفند 1389, 17:48 عصر
سلام اگه میخواهید یه فایل .gif رو نمایش بدین باید از یه QLabel استفاده کنید و تابع QLabel::setMovie رو به کار ببرین . ( خودتون هم میتونید این کار و انجام بدین ، یعنی خودتون یه تصویر gif رو بگیرید و نمایشش بر عهده خودتون باشه . اگه نیاز دارین بگید تا بیشتر توضیح بدم ) .
اما راه بهتر و در واقع استاندارد تر برای نمایش یه لودینگ برای یک کاری که زمان انجامش مشخصه استفاده از یک QProgressBar هستش . اما اگه زمانش مشخص نیست ( مثل اتصال به سرور ) از همون QProgressBar استفاده میکنیم با این تفاوت که تابع setRange این QProgressBar رو با مقدار های صفر و صفر صدا میزنیم . این کار باعث میشه که نوار سبز رنگی ( اگه ویندوزتون 7 اه ) از این ور به اون ور بره



QProgressBar *prb = new QProgressBar;
prb->setRange( 0, 0 ); prb->show();


سلام

من میخام از gif به جای icon یه PushButton استفاده کنم ؟

اونی هم که گفتین اگه میشه و زحمتی نیست بگین :لبخند:!

.:saeed:.
یک شنبه 15 اسفند 1389, 00:25 صبح
سلام
دو راه دارید :
1. یه subClass از کلاس QPushButton تعریف کنید و یه لیبل به اون اضافه کنید و بعد برای اون لیبل فایل gif ست کنید.
2. یه subClass از کلاس QPushButton تعریف کنید ( البته نیازی هم نیست ، صرفا جهت استفاده های بعدی ) . توی این کلاس یه QTimer بذارید و در هر چند میلی ثانیه مثلا 100 میلی ثانیه فریم بعدی فایل gif رو بخونید و به عنوان آیکن دکمه در نظر بگیرید.
برای خوندن فریم های تصویر گیف از تابع زیر استفاده کنید

bool QImageReader::read ( QImage * image )
For image formats that support animation, calling read() repeatedly will return the next frame. When all frames have been read, a null image will be returned.
خودتون سعی کنید اگه نشد یا مشکلی پیش اومد بپرسید

alirezabe
یک شنبه 26 تیر 1390, 13:24 عصر
سلام

می دونم که این تاپیک قدیمی شده ولی من هم همین مشکل را دارم و می خواستم از style sheet به gif انیمیت بدهم که نشد بعد راه دوم را امتحان کردم که نمی دونم چطوری QImage را به icon بدهم در مورد راه اولی هم هیچ ایده ای ندارم می خواستم اگر می شود یک راهنمایی بفرمایید

.:saeed:.
یک شنبه 26 تیر 1390, 14:22 عصر
نمی دونم چطوری QImage را به icon بدهم



QImage img(your_parameters _to_constructure);
....
....
your_button->setIcon(QIcon(QPixmap::fromImage(img));





در مورد راه اولی هم هیچ ایده ای ندارم می خواستم اگر می شود یک راهنمایی بفرمایید

وقتی از یه کلاسی که از جنس QWidget باشه ارث ببری میتونی با باز تعریف (Reimplement ) تابع زیر شکلش رو هر جور که دوست داری تغییر بدی .
void QWidget::paintEvent ( QPaintEvent (http://barnamenevis.org/qpaintevent.html) * event ) [virtual protected]

در ضمن اگه میخوای از راه بالا استفاده نکنی میتونی یه فرزند از جنس QLabel برای دکمت ست کنی. یعنی parent اون لیبل رو بذاری دکمه.

.:saeed:.
یک شنبه 26 تیر 1390, 14:41 عصر
به مثال خیلی ساده زیر یه نگاهی بندازید . ( خودتون تغییرش بدین تا بشه ازش بهینه تر استفاده کرد )
72541