جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'qml'.
64 نتیجه پیدا شد
-
با سلام و درودهای فراوان بر شما دوستداران طراحی و توسعه، امروز نیاز دیدم یک توضیح در رابطه با تفاوتهای عمدهٔ فناوری ساخت و توسعهٔ رابطکاربری در نرمافزارهای تحت فریمورک کیوت ارائه کنم. در این مقاله من به دو سبک متفاوت با کارآیی و اهمیت آنها مطابق با مستندات فریمورک کیوت میپردازم و شما میتوانید بر اساس نیازمندی و برداشت خود از آن، یکی از فناوریهای لازم را انتخاب و ظاهر برنامهٔ خودتان را با آن آراسته کنید! رابطکاربری (UI) یکی از عوامل اصلی در جذب کاربران و بهبود تجربهکاربری (UX) است. یک طراحی صحیح و مناسب برای واسطکاربری میتواند کاربران را به نرمافزار شما جذب کند و به معنای واقعی کاربران را متقاعد کند که نرمافزار شما صحیح است و قابل استفاده، حتی اگر امر اصلی برنامه اجرای آن باشد. رابطکاربری مناسب، کاربران را به یادگیری آسان فرایندهای نرمافزار و همچنین استفاده از آن ترغیب میکند. با طراحی یک واسط کاربری ساده و کاربر پسند، میتوان زمان و هزینهای برای آموزش کاربرانی که قرار است از نرمافزار شما استفاده کنند, صرفه جویی کرد. در نهایت، رابطکاربری نرمافزار ممکن است انگیزههای کاربران برای استفاده از نرمافزار شما را افزایش دهد. با انتخاب فوقالعاده از کاغذ دیواری و فونتهای جذاب، شما میتوانید به تاثیر خوبی بر روی انگیزههای کاربران برای استفاده از نرمافزار خود داشته باشید. اهمیت رابطهای کاربری مدرن و سنتی رابطکاربری سنتی، یک رابطکاربری ابتدائی است، که چندین دهه است به کار میرود. این سبک برای محیطهای کاربردی نسبتاً پایدار و سادهتر معرفی شده است، با پنجرهها، دستورالعملهای پایه، معمول و منوهای کلاسیک. اما اخیراً، رابطهای کاربری مدرن، تلاش کردهاند تا به کاربرانی که حوصلهٔ کار با رابطکاربری سنتی را ندارند، ارائه شوند چرا که نیاز به تعامل و تجربهکاری بهتر بیشتر و بیشتر میشود. این رابطها، با استفاده از طراحی مدرن، صفحات پویا، و مفهوم سرعت، زیبایی و حتی تحرک مناسب، میخواهند توانایی شما را در مدیریت محیطکاری (کار با نرمافزار) افزایش دهند. بیشتر رابطهای کاربری مدرن، به کاربران محیط کاری تمیز و منظم، صفحه اصلی متحرک، آیکون های جذاب و فهرست منوی منظم، نوع قلم و اندازهٔ مناسب و جذاب را ارائه میدهد تا با اشتیاق بیشتری از کار با محیط مورد نظر لذت ببرید. در این سند، تفاوت بین Widgets Qt و Qt Quick و نحوهٔ انتخاب مناسب برای نیازهای برنامه خود را توضیح خواهیم داد. قبل از اینکه به دلایلی بپردازیم که چرا شما ممکن است بخواهید Widgets Qt را به Qt Quick یا برعکس انتخاب کنید، سپس شروع به بررسی آنچه که هر کدام دقیقاً ارائه میدهند و در چه شرایطی میتوانید از آنها استفاده کنید نیز خواهیم داشت. راهکارهای فریمورک Qt برای طراحی رابطکاربری این فریمورک دارای چندین فناوری برای ایجاد رابطکاربری است. در حالی که میتوان این فناوریهای مختلف را در صورت نیاز ترکیب و مطابقت داد، یک رویکرد اغلب برای نوع خاصی از رابط کاربری مناسبتر از سایرین است. Qt Creator مثال خوبی از برنامهای است که ویجتهای سنتی Qt را با Qt Quick ترکیب میکند. Qt Widgets اساس رابطکاربری را تشکیل میدهند، در حالی که Qt Quick به عنوان مثال برای اجرای حالت خوش آمدگویی استفاده می شود. بخشهای زیر معرفی مختصری از فناوریهای موجود برای ایجاد رابط کاربری و جدول مقایسهای برای کمک به انتخاب بهترین فناوری مناسب ارائه میدهند. دربارهٔ Qt Widget (کیوت ویجت) ماژول Qt Widgets مجموعهای از عناصر رابطکاربری را برای ایجاد رابطهای کاربری کلاسیک به سبکِ پیشفرضِ دسکتاپ فراهم میکند. کلاس QWidget قابلیت اولیه برای رندر کردن (ساخت) روی صفحه و مدیریت رویدادهای ورودی کاربر را فراهم میکند. تمام عناصر UI که Qt ارائه میکند یا زیر کلاسهای QWidget هستند یا در ارتباط با یک زیر کلاس QWidget استفاده میشوند. ایجاد ویجتهای سفارشی با زیر کلاس QWidget یا یک زیر کلاس مناسب و پیادهسازی مجدد کنترل کننده رویداد مجازی انجام میشود. سبکها (پوستهها/ظاهر) سبکها به نمایندگی از ویجتها طراحی میشوند و ظاهر و احساس یک رابطکاربری گرافیکی را دربر میگیرند. ویجتهای داخلی Qt از کلاس QStyle برای انجام تقریباً تمام طراحیهای خود استفاده میکنند و اطمینان حاصل میکنند که دقیقاً شبیه ویجتهای بومی معادل هستند که در زیر تصاویر مربوط به ظاهر پیشفرض سیستمعاملهای ویندوز، لینوکس و مک هستیم. به طور کلی، Qt Style Sheets مکانیزم قدرتمندی است که به شما امکان میدهد ظاهر ویجتها را سفارشی کنید، علاوه بر آنچه که قبلاً با زیر کلاسبندی QStyle امکانپذیر است. لایهبندیها (چیدمان) چیدمانها روشی ظریف و انعطاف پذیر برای مرتب کردن خودکار ویجت های کودک در ظرف خود هستند. هر ویجت مورد نیاز اندازه خود را از طریق خصوصیات sizeHint و sizePolicy به چیدمان گزارش میدهد و طرحبندی فضای موجود را بر این اساس توزیع میکند. محیط Qt Designer یک ابزار قدرتمند برای ایجاد تعاملی و چیدمان ویجتها در طرحبندی است. کلاسهای Model/View معماری model/view کلاسهایی را ارائه میدهد که نحوه ارائه دادهها به کاربر را مدیریت میکنند. برنامههای مبتنی بر داده که از فهرستها و جداول استفاده میکنند، به گونهای ساختار یافتهاند که دادهها و مشاهده را با استفاده از مدلها، نماها و نمایندگان جدا کنند. محیط توسعهٔ Qt Creator و بخش Qt Designer ویرایشگر کد پیشرفته Qt Creator به شما امکان میدهد نرمافزار را به زبانهای C++، QML، جاوا اسکریپت، پایتون و سایر زبانها بنویسید. این ویژگی تکمیل کد، برجسته سازی نحو، refactoring است و دارای اسناد داخلی در نوک انگشتان شما است. دربارهٔ کیوت کوئیک (Qt Quick) ماژول Qt Quick کتابخانهٔ استاندارد برای نوشتن برنامههای کاربردی QML است. در حالی که ماژول Qt QML موتور QML و زیرساخت زبان را فراهم میکند، ماژول Qt Quick تمام انواع اساسی لازم برای ایجاد رابطکاربری با QML را ارائه میدهد. در واقع یک بوم بصری را ارائه میکند و شامل انواعی برای ایجاد و متحرک کردن اجزای بصری، دریافت ورودی کاربر، ایجاد مدلها و نماهای دادهها و نمونهسازی با تأخیر شیء است. ماژول Qt Quick نیز یک API QML ارائه میکند که انواع QML را برای ایجاد رابطهای کاربری با زبان QML فراهم میکند و هم یک رابطبرنامهنویسی (API) از ++C برای گسترش برنامههای QML با کد ++C ارائه میکند. این یک مزیت بزرگ است که به شما اجازه میدهد رابطهای مبتنی بر قدرت سی++ را به خوبی ارائه کنید. پوستهٔ پیشفرض (Default) تا کیوت ۵ و پوستهٔ پایه (Basic) از کیوت ۶ به بعد. سبک پیش فرض یک سبک همه جانبه ساده و سَبُک است که حداکثر عملکرد را برای کنترل های سریع Qt ارائه می دهد. پوستهٔ فیوژن (Fusion) سبک Fusion یک سبک پلتفرم آگنوستیک است که ظاهری بینظیر دسکتاپ را برای کنترلهای کیوت کوئیک ارائه میدهد. پوستهٔ ایمَجین (Imagine) سبک Imagine بر اساس داراییهای تصویر است. این سبک دارای مجموعهای پیشفرض از تصاویر است که به راحتی با ارائه یک فهرست حاوی تصاویر با استفاده از یک قرارداد نامگذاری از پیش تعریف شده قابل تغییر است. پوستهٔ مکاواِس (macOS) از کیوت ۶ به بعد. سبک macOS یک سبک بومی برای macOS است. پوستهٔ آیاواِس (iOS) از کیوت ۶ به بعد. سبک iOS یک سبک بومی برای iOS است. پوستهٔ متریال (Material) سبک Material، طراحی جذابی را بر اساس دستورالعملهای طراحی متریال Google ارائه میکند، اما به منابع سیستم بیشتری نسبت به سبک پیشفرض نیاز دارد. پوستهٔ یونیورسال (Universal) سبک Universal طراحی جذابی را بر اساس دستورالعملهای طراحی جهانی مایکروسافت ارائه میکند، اما به منابع سیستم بیشتری نسبت به سبک پیشفرض نیاز دارد. پوستهٔ ویندوز (Windows) از کیوت ۶ به بعد. سبک Windows یک سبک بومی برای Windows است. اگر هیچ سبکی به صراحت تنظیم نشده باشد، یک سبک پیش فرض استفاده خواهد شد. سبکی که استفاده میشود به سیستمعامل بستگی دارد: سیستمعامل اندروید: Material Style سیستمعامل آیاواِس: iOS Style سیستمعامل لینوکس: Fusion Style سیستمعامل مکاواِس: macOS Style سیستمعامل ویندوز: Windows Style انتخاب سبک در زمان کامپایل انتخاب سبک زمان کامپایل راهی برای تعیین یک سبک برای استفاده با وارد کردن آن در QML است. به عنوان مثال، برای وارد کردن سبک Material: import QtQuick.Controls.Material ApplicationWindow { // ... } انتخاب سبک در زمان اجرا انتخاب سبک زمان اجرا راهی برای تعیین یک سبک برای استفاده با وارد کردن QtQuick.Controls است: import QtQuick.Controls افزونهٔ QtQuick.Controls استایل و استایل بازگشتی را که در زمان اجرا تنظیم شدهاند از طریق یکی از روشهای زیر وارد میکند: دستورQQuickStyle::setStyle() The -style آرگومان خط فرمات QT_QUICK_CONTROLS_STYLE متغیرهای محای qtquickcontrols2.conf پیکربندی از طریف فایل اولویت این رویکردها به ترتیبی است که فهرست شدهاند، از بالاترین به پایینترین. یعنی استفاده از QQuickStyle برای تنظیم استایل همیشه بر استفاده از آرگومان خط فرمان اولویت دارد. برای اجرای یک برنامه با یک سبک خاص، یا با استفاده از QQuickStyle در ++C، پوسته را پیکربندی کنید، یک آرگومان خط فرمان را ارسال کنید، یا یک متغیر محیطی را تنظیم کنید. روش دیگر، سبک ترجیحی و ویژگیهای خاص سبک را میتوان در یک فایل پیکربندی مشخص کرد. اولویت این رویکردها به ترتیبی است که در زیر فهرست شدهاند، از بالاترین به پایینترین. یعنی استفاده از QQuickStyle برای تنظیم استایل همیشه بر استفاده از آرگومان خط فرمان اولویت دارد. استفاده از Qt Quick Style در ++C رابطهای QQuickStyle C++ API پیکربندی یک سبک خاص را ارائه میکند. مثال زیر یک برنامه Qt Quick Controls را با سبک Material اجرا میکند: QQuickStyle::setStyle("Material"); استفاده از روش آرگومانهای خط فرمان ارسال آرگومان خط فرمان-style راه مناسبی برای آزمایش سبکهای مختلف است. این روش بر سایر روش های ذکر شده در زیر ارجحیت دارد. مثال زیر یک برنامه Qt Quick Controls را با سبک Material اجرا میکند: ./app -style material استفاده از روش متغیرهای محیطی تنظیم متغیر محیطی QT_QUICK_CONTROLS_STYLE را میتوان برای تنظیم ترجیح سبک در سراسر سیستم استفاده کرد که بر فایل پیکربندی ذکر شده در زیر ارجحیت دارد. مثال زیر یک برنامه Qt Quick Controls را با سبک جهانی اجرا میکند: QT_QUICK_CONTROLS_STYLE=universal ./app استفاده از روش پیکربندی فایل کنترلهای کیوت کوئیک، از یک فایل پیکربندی خاص پشتیبانی میکند، :/qtquickcontrols2.conf، که در منابع یک برنامه تعبیه شده است. فایل پیکربندی میتواند سبک ترجیحی (ممکن است با یکی از روشهایی که قبلا توضیح داده شد لغو شود) و ویژگیهای خاص سبک را مشخص کند. مثال زیر مشخص می کند که سبک ترجیحی سبک Material است. [Controls] Style=Material سفارشیسازی کنترلهای کیوت کوئیک کنترل کیوت کوئیک از یک سلسله مراتب (درخت) از آیتمها تشکیل شده است. به منظور ارائه ظاهر و احساس سفارشی، پیادهسازی پیشفرض QML هر آیتم را میتوان با یک سفارشی جایگزین کرد. گاهی اوقات شما میخواهید برای یک بخش خاص از UI خود یک ظاهر «یکباره» ایجاد کنید و در هر جای دیگر از یک سبک کامل استفاده کنید. شاید از سبکی که استفاده میکنید راضی باشید، اما دکمه خاصی وجود دارد که اهمیت خاصی دارد. پشتیبانی از High-DPI در کیوت کوئیک کنترلهای کیوت کوئیک، از مقیاسگذاری چند-سکویی با DPI (نقطه در اینچ) بالا که در Qt 5.6 معرفی شده است، پشتیبانی میکند. این ویژگی انتخابی است و میتوان آن را با تنظیم ویژگی برنامه Qt::AA_EnableHighDpiScaling در ++C قبل از ساخت QGuiApplication فعال کرد: #include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // <-- QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec(); } محیط طراحی اختصاصی Qt Design Studio فرآیند توسعه خود را با پر کردن شکاف بین طراحان و توسعهدهندگان متحول کنید تا دیدگاههای طراحی خود را به رابط های کاربری آماده تولید تبدیل کنید. طراحیهای رابطکاربری را با ابزارهای طراحی مانند Figma، Adobe XD یا Adobe Photoshop ایجاد کنید. آنها را به استودیوی طراحی Qt وارد کنید، جایی که کد به طور خودکار تولید شده و آماده استفاده توسط توسعهدهندگان است. تعاملات و رفتارهای پویا را شبیهسازی و تایید کنید. هر چیزی که در استودیوی طراحی Qt ساخته شده است ذاتاً کراس پلتفرم است و میتواند در هر سختافزار یا محیط سیستمعاملی کامپایل شود. وقتی در مورد ایجاد رابطکاربری صحبت میکنیم، فقط در مورد ایجاد یک ماکت با داراییهای موجود صحبت نمیکنیم. با Qt Design Studio، داراییهای شما تبدیل به یک ترکیب رابطکاربری میشود که آماده عملکرد است. تفاوتهای عمدهٔ Qt Widgets طراحی با این ماژول فقط بر پایهٔ زبانهای برنامهنویسی ++C و Python در امکانپذیر است. .سبک و ظاهر بومی در پلتفرمهای دسکتاپ اما نه در پلتفرمهای موبایل. امکان سفارشی شدن را دارد. به بکاند بومی جهت ساخت نیاز ندارد. میتواند در مواقع لزوم از رابطهای برنامهنویسی بومی بکاندی هر پلتفرم استفاده کند. سبک پایه را ارائه میکند، روان نیست، اما امکان تعریف انیمیشن را ارائه میکند. به واسطهٔ زیر کلاسها یا کلاسهای سفارشی خودتان میتوانید رفتارهای ویجت را باز تعریف کنید. محیط اختصاصی طراحی و توسعهٔ Qt Designer تفاوتهای عمدهٔ Qt Quick طراحی با این ماژول به صورت پایه به واسطهٔ QML امکانپذیر است. هرچند هنوز هم برخی از نیازمندیها به واسطهٔ ++C و Python انجام میشود. شما میتوانید ماژولها و کامپوننتهای سفارشی خوبی به واسطهٔ ++C برای QML طراحی کنید. ظاهر کاربری بومی تحت ماژول Qt Quick Controls از نسل کیوت ۶ به بعد ممکن شده است. تطبیق و دریافت اطلاعات پوسته برای اندروید در زمان نیاز ممکن است. به بکاند بومی و پسزمینه وابسته است. همچنین میتوانید ایتمهای خود را به صورت مستقیم با بکاند بومی ارائه کنید. میتوانید پوستهٔ روان و جذابی را تعریف کنید. پیادهسازی انیمیشنها و جلوههای بصری پیچیده بسیار ساده قابل پیادهسازی شدن است. جلوههای گرافیکی به راحتی قابل تعریف هستند. امکان سفارشیسازی رفتارهای آیتم و کنترلها وجود دارد. به واسطهٔ گسترش و یا ساخت کامپوننتهای سفارشی خود بر اساس انواع موجود در Qt Quick. علاوه بر پشتیبانی از محیط Qt Designer، به محیط اختصاصی و پیشرفتهٔ طراحی و توسعهٔ Qt Design Studio مجهز است. چه زمانی باید یکی از این فناوریها را به دیگری ترجیح دهیم؟ Qt Widgets اگر شما نیاز به یک رابطکاربری ساده و سریع نیاز دارید. اگر نمیخواهید با JavaScript سرو کار داشته باشید. Qt Quick زمانی که میخواهید رابطهای کاربری جذاب و خلاقانه تولید کنید. زمانی که میخواهید برنامهٔ خود را برای موبایل و دستگاههای جاسازی شده (امبد) ارائه کنید. وقتی هدفتان ساخت نرمافزارهای چند-سکویی باشد. زمانی که میخواهید بیشترین جذابیت و کارآیی را از نظر UI و UX ارائه کنید. آشنایی با زیرساخت RHI و کارآیی دو فناوری کیوت ویجت و کیوت کوئیک بسیاری از کاربران با توجه به کدهای سی++ در کیوت ویجت، بر این باورند که ساخت و توسعهٔ رابطهای کاربری با Qt Widgets عموماً سریعتر و از کارآیی بهتری برخوردار است. این حقیقت در قبل از زمان فناوری جدید از نسل کیوت کوئیک اعتبار بسیاری داشت، اما با توجه به توسعهٔ زیرساختهای کیوت در نسلهای ۵.۱۵ و ۶ به بعد، تمامی فرایند رندرینگ به لطف کدهای سیپلاسپلاس به صورت بومی تحت معماری RHI انجام میشوند و این مسأله دیگر حائز اهمیت نیست، مگر اینکه دلایل شما برای انتخاب کیوت ویجت صرفاً دسترسی ساخت به رابطکاربری سادهتر و عدم اهمیت داشتن سبکِ نوین باشد. زیرساخت QRhi، یک رابط سختافزاری رندر Qt، انتزاع گرافیکی داخلی Qt است که در آن APIهای سه بعدی مانند OpenGL، Vulkan، Metal و Direct 3D درگیر هستند. در مقایسه با 5.15، پیشرفتهای اصلی در نسخه 6.0، اصلاحات پولیش زیاد اینجا و آنجا و مهمتر از همه، مجموعه بزرگی از بهینهسازی عملکرد است. این بهینه سازی به طور کامل به صورت بومی و رابطهای برنامهنویسی ترکیبی با ++C پیادهسازی شده است و کارآیی خروجی در تولید رابطهای خلاقانه، جلوههای بصری ۲ و ۳ بعدی بسیار عالی خواهد بود. سخن پایانی ساخت و توسعهٔ یک رابطکاربری امروزه یکی از مهمترین معیارهای سنجش کیفی نرمافزار در سمت کاربر است، اگر این موضوع برای شما اهمیت بسیار دارد، قطعاً باید به روشهای اختصاصی در طراحی سوق پیدا کنید. در غیر این صورت نیاز به کدنویسی بیشتر، درک و بازنویسی انتزاعهای فراوان در سمت کدهای خام به واسطهٔ Qt Widgets بسیار خسته کننده خواهد بود.
-
سلام و خسته نباشید برای نمایش آیکون به جای استفاده از تصویر png از کاراکترهای یونیکد استفاده کردم ولی متاسفانه وقتی برنامه روی اندروید نصب میشه unicode نمایش داده نمیشه. اندروید 10 هستش qt 5.15.2 و قطعه کد به شکل زیر می باشد : import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Controls 2.12 Item { FontLoader { id: fixedFont name: "Corbel" } Text { id:currentPosition text: qsTr("\u2B57") font.pixelSize: 36 x:parent.width-50 y:parent.height - 150 font.bold: true color: "black" opacity: 0.5 font.family: fixedFont.name } }
-
سلام و درود حداقل نسخه اندرویدی که qt ساپورت میکنه نسخه چند هستش؟؟ ظاهرا فقط نسخه های 10 و بالاتر و ساپورت میکنه.
-
با سلام من دوتا فرم دارم که فرم اولم مربوط فرم لاگین هست و فرم دوم مربوط صفحه اصلی برنامه میخوام بعد از زدن دکمه ورود فرم اصلی باز بشه و لاگین بسته بشه ولی متاسفانه دوباره فرم لاگین بعد از اینکه فرم اصلی باز میشه،اونم باز میشه کد من سمت cpp به شکل زیر هست: bool Test::status(QString s) { if(this->Password==s) { cout<<myEngine.rootObjects().length(); const QUrl url(QStringLiteral("qrc:/main.qml")); myEngine.load(url); if(myEngine.rootObjects().isEmpty()) return false; qDebug()<<s<<"\n"; return true; } else return false; } bool Test::initialize() { const QUrl url(QStringLiteral("qrc:/MyForm.qml")); myEngine.load(url); if(myEngine.rootObjects().isEmpty()) return false; return true; }
-
با عرض سلام و ادب برای ایجاد یک برنامه اندرویدی که به اطلاعات روی سرور با سیستم عامل ویندوز و دیتابیس sql server دسترسی داشته باشد و سرور به صورت Lockal و یا ممکنه با آی پی استاتیک باشد چکار باید کرد ؟ پیشاپیش از راهنمایی شما سپاسگزارم
-
با عرض سلام وخسته نباشید سوالی داشتم در مورد اینکه اگر ما در qml یک فرم جدید رو با استفاده از loader در زمان کلیک یک دکمه load کنیم بصورتی که فرم جدید با استفاده از animation بخواد نشون داده بشه یعنی مثلا از بالا شروع کنه به پایین اومدن،باید چکار کرد ؟ من قسمت animation و در فرم دوم قرار میدم که جواب نمیده. پیشاپیش از راهنمایی شما بزرگواران ممنونم
-
سلام.وقتتون بخیر. خسته نباشید. سوالی که برای من پیش اومده وقتی میخام داخل qml فایل رو از File Dialog دریافت کنم و با FTP آپلود کنم روی هاست متاسفانه این امکان وجود نداره سمت بک اند هم نتونستم حتی فایل رو پاس بدم و یا آپلود کنم، ولی بیشتر دوس دارم این کارو با js داخل qml انجام بدم ولی حتی نتونستم فایل رو با File Dialog بگیرم. ممنون میشم راهنمایی کنید.
-
سلام.وقتتون بخیر. امیدوارم حالتون خوب باشه. من برای ولیدت کردن تکست فیلد نام کاربری از کد زیر استفاده میکنم.ولی متاسفانه بعد از استفاده از regular expression زیر برای نام کاربری، دیگه نمیتونم هیچ مقداری رو داخل تکست فیلد وارد کنم. TextField{ Layout.preferredWidth: parent.width font.family: appTextFont.name font.pixelSize: designSettingItem._textFontSize validator: RegExpValidator { regExp: /^[a-zA-Z0-9]([._-](?![._-])|[a-zA-Z0-9]){3,18}[a-zA-Z0-9]$/ } } این regular expression رو هم از سطح وب پیدا کردم.
-
سلام.وقتتون بخیر. من میخام فونت TabButton رو تغییر بدم و حتی سایز فونت رو افزایش بدم ولی متاسفانه کار نمیکنه.کد هم بصورت زیر هست: TabBar{ id: account_tabBar width: parent.width currentIndex: 1 TabButton{ text: "تغییر رمز" Font.family: appTitleFont.name Font.pixelSize: designSettingItem._titleFontSize3 } TabButton{ text: "پروفایل" } } مقدار appTitleFont و designSettingItem._titleFontSize3 از قبل تنظیم شدند و درموارد دیگری هم استفاده کردم و کار هم کردند. اروری هم که میده بصورت زیر هست. Non-existent attached object برای خطی هست که فونت فامیلی رو ست کردم. ممنون میشم راهنمایی کنید.
-
سلام.وقتتون بخیر. من مدتی هست که با کتابخانه Qt کارمیکنم و از فناوری Qt Quick استفاده میکنم.مشکلی که دارم مشکل واکنش گرا کردن سایز متن هست این اصلی ترین مشکل من در طراحی با QML است. کتاب استاد اسد زاده رو نیز تهیه کردم ولی درمورد واکنش گرا بودن توضیح کم بود و نتونستم مثال کاربردی و درکل درکی از این موضوع داشته باشم. ممنون میشم اگر این موضوع و نحوه ریسپانسیو کردن سایز متن رو کسی توضیح بده. اگر با مثال باشه خیلی عالی میشه?
-
سلام دسترسی به اعضای nested یک repeater به چه صورتی هست؟ من با استفاده از دستور زیر به جواب نرسیدم : repeater.itemAt(id).children[0].children[0].children[0].color = "red"; Repeater { id: repeater model: 5 Rectangle { property int radius: 15 gradient: Global.Theme width: radius Button { id:control x: 20 y : -25 Text { id : saveId// saveId text: qsTr(Global.textArray[index]) font : myFont color: Global.Theme ? Global.fontColor_gray : "red" anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter } InnerShadow { //anchors.fill: parent cached: true visible: true horizontalOffset: 0 verticalOffset: 0 radius: 8 samples: 16 color: Global.Theme ? Global.innerShadowColor_gray : "red" smooth: true source: saveId } DropShadow { anchors.fill: saveId source: saveId verticalOffset: 4 //color: "#80000000" color: Global.Theme ? Global.dropShadowColor_gray : "red" radius: 30 samples: 300 } background: Rectangle { implicitWidth: 130 implicitHeight: 55 border.width: control.activeFocus ? 2 : 1 border.color: "darkgray" radius: 10 gradient: Global.Theme ? gradientProvider.gradientThem_1 : gradientThem_0 } onClicked: { } } } }
-
سلام من برای اینکه یک آرایه از داده ها رو در qml نمایش بدم از ChartView و LineSeries استفاده می کنم و دستور append رو برای LineSeries در تایمر فراخوانی می کنم. میخوام وقتی یک بار عرض صفحه پیمایش شد، برای اینکه real time بودن گراف نشون داده بشه، یک eraser تعریف کنم که هر بار چند پیکسل از داده های جلوی خط رو حذف کنه و گراف رو بروز رسانی کنه. با تعریف دو LineSeries به نتیجه دلخواه نمی رسم ، میخواستم بپرسم کسی تجربه این در این زمینه داره که به اشتراک بگذاره؟ Rectangle { id: myRect width: 600 height: 400 anchors.centerIn: parent LinearGradient { anchors.fill: parent } ChartView { id: chartView anchors.centerIn: parent width: 600 height: 400 backgroundColor: "transparent" title: "My Graph" titleColor: Qt.rgba(.5,.5,.5,1) titleFont.pointSize:10 anchors.fill: parent antialiasing: true anchors { fill: parent; margins: 5 } margins { right: 0; bottom: 0; left: 0; top: 0 } Component.onCompleted: { axisX(lineSeries).visible = false axisY(lineSeries).visible = false } Rectangle { id: rec height:parent.height x: 30 y: 50 width: 1 color: "red";// "transparent" } ValueAxis { id: axisX min: 0 max: 100 color: "transparent" labelsFont:Qt.font({pointSize: 10}) } ValueAxis { id: axisY min: -300 max: 300 color: "transparent" } LineSeries { id: series1 axisX: axisX axisY: axisY name: "From QML" useOpenGL: chartView.openGL color: "#44D77B" width: 1 pointLabelsColor: "red" } LineSeries { id: series2 axisX: axisX axisY: axisY name: "From QML" useOpenGL: chartView.openGL color: "#44D77B" width: 1 pointLabelsColor: "red" } } } Timer { interval: 50 repeat: true running: true onTriggered: { series1.append( timeStep , myArray[index]); if(index == 400) { index =0; series1.clear(); //series2.clear(); timeStep=0; first = true; timeStep1 = 5; index1 = 5; } //updateRectangle(); print("index : " , index); timeStep+= 1;// 0.25; index++; } } ممنون
-
سلام چطوری می تونم یک فایل باینری رو در qt بخونم و داده هاش رو به صورت یک آرایه در qml نمایش بدم؟ ممنون
-
سلام برای استفاده از ماژول های private متریال چه کاری باید انجام داد؟ به عنوان مثال : import QtQuick.Controls.Material.impl 2.12 quickcontrols2impl-private را نمی شود وارد کرد و خطای Unknown module می دهد. این فایل qquickiconlabel.pro (لینک) رو هم نگاه کنید. Ripple که در Button متریال استفاده شده را احتیاج دارم.
-
وقت همگی بخیر بنده میخواستم بدونم آیا راهی هست که زیر یک surface3d که فقط seri داره رو پر کنم درواقع میخوام زیرش رو طرف با زوم کردن نره زیر surface رو ببینه و مشکی باشه. اگر این نمودار بنده باشه(که البته نیست فقط برای نشون دادن مشکلم عرض میکنم. لینک تصویر میخوام که زیرش مشکی شه و فقط سطح دیده شه تنها راهی که در ذهنم دارم که اصلا جالب نیست اینه که خودم یه سری دیتا دیگه درست کنم و مقادیرش با دیتای اصلی یکی باشه جز کناره هاش که کمترین مقدار surface باشه تا کناره ها رو مشکی کنه که فک میکنم مشکلات زیر رو داره: ۱- هردفعه پردازش اضافی با اپدیت مقادیر میشه و دوباره یه سری دیگه ساخته میشه که سرعت رو میاره پایین ۲- یکم هم مشکل هست ساخت دیتای اضافی اینطوری راه حلی دارید دوستان؟
-
سلام بر دوستان و اساتید گرامی. من در مستندات QML زیاد دیدم که نوشته فلان جز از جزئی دیگر ارث برده. حالا سوالم اینجاست که این وراثت با خود QML پیاده سازی میشه یا در سمت C++ این کار رو انجام میدن؟ اگر وراثت با خود QML قابل پیادهسازی هست میشه در مثالی ساده توضیح بدین؟ سپاس گزارم.
-
سلام بر دوستان گرامی و اساتید ارجمند. چه طوری در QML/Qt Quick میشه در یک TextArea یا دیگر اشیا مرتبط با تایپ متن، جوری تعریف شن تا وقتی کیبورد روی فارسی هست از فونت مثلا بینازنین استفاده شه برای تایپ و وقتی کیبورد به زبان انگلیسی تغییر پیدا کرد از فونت مثلا تایمز نیو رومن استفاده شه؟ آیا اصلا QML یک همچین مکانیزمی رو در اختیار ما در سمت رابط کاربری قرار میده یا باید از خود C++ کمک گرفت؟ سپاس گزارم.
-
با سلام. چطور می تونم در کد زیر با اسکرول کردن در محدوده ی text area وقتی متن به انتها رسید خود صفحه اسکرول بشه؟ Page { id: page Flickable { id: flickable anchors.fill: parent anchors.margins: 5 boundsBehavior: Flickable.OvershootBounds contentHeight: contentItem.childrenRect.height + 10 Rectangle { id: rect width: 300 height: 200 color: "#00000000" border.width: 1 border.color: 'grey' radius: 5 anchors.horizontalCenter: parent.horizontalCenter anchors.top: parent.top anchors.topMargin: 10 } Flickable { flickableDirection: Flickable.VerticalFlick anchors.fill: rect anchors.leftMargin: 5 anchors.rightMargin: 5 TextArea.flickable: TextArea { id: textarea horizontalAlignment: Text.AlignLeft wrapMode: TextEdit.WordWrap } } } }
-
سلام.خسته نباشید. من می خوام از کتابخانه ی nakama در qml استفاده کنم.این کتابخانه به زبان cpp است.برای توابعش می تونم سیگنال و اسلات بنویسم و در qml فراخوانی کنم. ولی data type های سفارشی اون رو نمی دونم چطور در qml ایجاد کنم.مثلا در کد زیر (cpp): NClientParameters parameters; parameters.serverKey = "defaultkey"; parameters.host = "127.0.0.1"; parameters.port = DEFAULT_PORT; NClientPtr client = createDefaultClient(parameters); می خوام NClientParameters در qml قابل دسترسی باشه و بتونم هاست و پورت رو داخل qml تنظیم کنم(مثل بالا). بعد هم به عنوان پارامتر برای تابعم استفاده کنم. لینک کتابخانه cpp: https://heroiclabs.com/docs/cpp-client-guide/#usage
-
با سلام و عرض خسته نباشید. می خواستم بدونم چطور میشه بین صفحه ای که در webview لود شده و کد qml داده ها رو جابجا کرد؟ ظاهرا از طریق webchannel باید این کار رو کرد. از دوستان کسی می تونه آموزش بده. لینک زیر رو پیدا کردم ولی چون در c++ مهارت ندارم قسمت webview رو که از websockets استفاده می کنه رو متوجه نشدم. لینک با تشکر
-
- webchannel
- webview
-
(و 2 مورد دیگر)
برچسب زده شده با :
-
درود بر دوستان عزیز؛ وقتی در دایرکتوریای که کامپوننتهای خودمان را قرار دادهایم و با استفاده از فایل qmldir آنها را معرفی کردیم محیط QtCreator شروع به گیج زدن میکند و باید حتماً کل برنامه را یکبار Restart کرد. آیا راهی برای حل این مشکل وجود دارد ؟
-
درود بر دوستان عزیز؛ چگونه میتوان Itemهایی که در ScrollView قرار دارند را وسطچین کرد ؟: ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("Hello World") color: "gray" ScrollView{ width: parent.width / 2; height: parent.height / 2 clip: true anchors.centerIn: parent Column{ Repeater{ model: 40 Rectangle{color: "red"; border.color: "yellow"; width: 80; height: 80} } } } } در نمونهٔ بالا مثلاً میخواهم که تمامی Rectangleها در وسط ScrollView رندر بشوند.
-
درود بر دوستان عزیز؛ کامپوننت TextInput بهصورت پیشفرض وقتی اشارهگر ماوس را روی آن میبریم هیچ تغییر شکلی بر روی اشارهگر ماوس اعمال نمیشود، برای حل این مشکل بنده به اینصورت عمل کردهام : TextInput{ . . MouseArea{ anchors.fill: parent cursorShape: Qt.IBeamCursor } . } امّا مشکلی که وجود دارد این MouseArea یک لایه بر روی TextInput ایجاد میکند که مثلاً اگر قابلیّت selectByMouse را در TextInput فعال کردهباشیم دیگر کارنخواهد کرد. چه راهحلی برای این مشکل وجود دارد ؟
- 1 پاسخ
-
- mousearea
- cursorshape
-
(و 3 مورد دیگر)
برچسب زده شده با :
-
درود و خستهنباشید به دوستان؛ در مستندات RadioButtonStyle مثالی به اینصورت زده شده : RadioButton { text: "Radio Button" style: RadioButtonStyle { indicator: Rectangle { implicitWidth: 16 implicitHeight: 16 ... } ... } ... } امّا RadioButton خاصیّتی تحت عنوان style ندارد، آیا این مثال اشتباه است ؟ و چگونه میتوان از RadioButtonStyle استفاده کرد ؟ این مورد دربارهٔ CheckBoxStyle نیز صدق میکند. ویرایش: باتوجه به مستندات : Import Statement: import QtQuick.Controls.Styles 1.4 Since: Qt 5.1 قابلیّت style در ویرایش 1.4 از ماژول QtQuick.Controls.Styles موجود میباشد، و پس از import کردن آن خطا رفع میشود. آیا اضافه کردن نسخهٔ 1.4 و 2.13 تداخلی به وجود میآورد ؟