622 سوال

629 پاسخ

855 نظر

242 کاربر

به سامانه پرسش و پاسخ کیوت خوش آمدید, این سامانه به شما امکان می دهد پرسشهای خود را طرح نموده و در کوتاهترین زمان ، پاسخ خود را دریافت نمایید.

-قبل از سوال پرسیدن حتما جست و جو کنید.

-در صورتی که سوالی به شما کمک کرد و یا جوابی ، حتما به آن امتیاز مثبت دهید.

-در صورتی که سوالی پرسیدید و جواب خود را گرفتید حتما جواب را به عنوان بهترین جواب انتخاب کنید.

-از ارسال چند سوال در یک تاپیک جدا خودداری کنید.

-نام مناسب برای سوالات انتخاب کنید.

-برچسب مناسب برای سوالات انتخاب کنید.

-برای نوشتن کد کافی است کد را از ادیتور خود کپی و در ادیتور سایت الصاق کنید و با انتخاب کد کلید CTRL+K را فشار دهید.

-حتما قوانین و نکات دیگر را از اینجا بخوانید.

4 سوال در مورد طراحی UI قدرتمند

0 امتیاز
190 بازدید

سلام دوستان
حقیقتش دارم یه برنامه با UI قوی می نویسم.
UI این کار خیلی قدرتمنده و همه چیشو با فتوشاپ طراحی کردن و قراره که اینا رو در بهینه ترین حالت تو کار بچینم.می خوام قابلیت اسکین بهش بدم.
چیزی که اول به ذهنم رسید این بود که به وسیله QImage و تو یه widget بیام و دکمه های حرفه ای و ... رو خودم بنویسم.(گرافیک در حد ویندوز 7 و ...) ولی چیزی که بعدا به ذهنم رسید ،استفاده از QML بود.خوب از دیروز با QML هم آشنا شدم و تا حدودی باش ارتباط برقرار کردم.
هدفم بیشر این بود که یه فایل png رو به صورت مجتمع با حالتی شبیه به UV به سیستم بدم و بتونم تیکه تیکه نواحی پیکسلی رو تو رم درشون بیارم تا بتونم بچشبونم به کار.نهایتا با آپدیت این فایل png می تونستم UI جدید رو آپدیت کنم.جای UI ها تو این فایل png به صورت UV همیشه ثابته.مثلا فرض کنید قالب دکمه ها تو ناحیه مستطیل A و جای دسته اسکرول تو مستطیل B از این فایل png هست.
اینم کد ساده اش :
<<کد در انتهای متن در قسمت نظرات>>
سوالاتم:
1- آیا شما برای این کار Qt Widget رو بهتر می دونید یا QML رو؟
2- آیا می تونیم در یه پروژه ،هم از QML استفاده کنیم و هم از کلاسای C++ یعنی .h , .cpp ؟
3- آیا QML قدرت اینو می ده که بتونم یه چیزی شبیه به UV تو تری دی مکس و ... بش بدم و تیکه تیکه پارت های قسمتهای مختلف رو از نواحی خاص اون بیرون بکشم؟
4- اگه یه سمپل هم بهم آدرس بدید ممنون می شم...

سوال شده دی 22, 1392 در Qt GUI  بوسیله ی hadiabbasi کیومن (18,890 امتیاز)  
88% درصد پذیرش جواب ها

ویرایش شده دی 23, 1392 بوسیله ی hadiabbasi
QImage *MainSkin=new QImage();
QImage AppBackground_img;

MainSkin->load(QDir::currentPath()+"/Skin.png");
QLabel *label=new QLabel(this);
label->setFixedWidth(getAppWidth());
label->setFixedHeight(getAppHeight());
AppBackground_img=MainSkin->copy(0,0,getAppWidth(),getAppHeight());
label->setPixmap(QPixmap::fromImage(AppBackground_img));

2 پاسخ

+1 دیدگاه
 
بهترین پاسخ

جدا از این مباحث شما میتونید از CSS هم تو کیوت استفاده کنید
مثلا کد زیر یه فایل png رو از ریسورس میگیره....

.lineEdit{
background-image:url(:/images/bg.png);
}
پاسخ داده شده دی 23, 1392 بوسیله ی aidin کیومن (6,590 امتیاز)  
انتخاب شده دی 23, 1392 بوسیله ی hadiabbasi

مرسی آیدین عزیز
بنده می دونم با css بیشتر استایل شیت می دن ولی استایل شیت نمی خوام بدم...می خوام کل اسکین صحنه رو بش بدم تا بشه تو آپدیت های نرم افزار ،اونو به کل عوض کنم..خیلی لطف کردید ولی اگه به اون 4 تا سوال پاسخ بدید ،پاسختونو به عنوان بهترین پاسخ انتخاب می کنم...

اما با شیت هم میتونید اسکین های مختلف برای نرم افزار تعریف کنید + اینکه آپدیدتش کنید
در هر صورت فک کنم خیلی بی دردسر باشه...
در مورد اون چهار سوال هم آزادی عمل و سرعتی که با Qt Widget خواهید داشت تو QML نخواهید داشت!!!
بخاطر همین به نظر من اگه از Qt Widget استفاده کنید قدرت بیشتر و دردسر کمتری خواهید داشت

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

خواهش میکنم
لینک زیر خیلی به درددتون میخوره
لینک

مرسی...خیلی ممنون...

+1 دیدگاه

روش جالبیه .
البته برای این کار نیاز به پردازش تصویر هم داری ولی خب کاری که شما میخوای بکنی سادست شدنیه .
1- به نظر من اگر UI انیمیشن و افکت نداره از QWidget استفاده کن
2-اره میشه
3- من UV نمیدونم چیه

پاسخ داده شده دی 23, 1392 بوسیله ی omid_kma (310 امتیاز)  

مرسی امید جان
اگه سومی رو هم کامل کنی ،تیکتون خورده...
UV به یه تصویر می گن که تمام اقلام و قسمتهای تکستچر یه مدل یا یه برنامه رو داخلش می دن...مثلا دسته اسکرول ،ناحیه اسکرول ، گرافیک دکمه ها و ... رو تماما در یه عکس png ترنسپرنسی به صورت کنار هم می دن ،بعد برنامه می یاد از مختصات های پیش تعیین شده ،تکستچر رو برش می ده (توی رم ،وگرنه به خود فایل تصویر کاری نداره) و اینا رو پارت پارت می چسبونه به قسمتهای مختلفش به صورت تکستچر ...اگه کدی که نوشتمو ببینید ،متوجه منظورم می شید...پس تو هربار اجرای برنامه ،یه بار اولش این فایل خونده می شه و اسکین ها رار داده می شند.البته پردازش تصویر نیست چون یه قسمتهایی رو قرار داد می کنیم و گرافیستها دقیقا رو اون نواحی و مختصات ها و قسمتها ،گرافیک های جدید رو طراحی می کنن....در واقع الگوی اونها سمپل ما می شه...نهایتا برا تغییر اسکین کافیه اونا رو آپدیت کنید تا ok شه...
اگه بتونید با qml یه قسمتی از تصویر رو برش بدین (ناحیه مستطیلی) مشکل من یه جورایی حل شده...

...