رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران
  • 0
فانوس

تفاوت کیوت کوئیک با UI فایل و چند سوال دیگه

سوال

سلام، من دارم پروژه جدید می‌سازم با QML. سوالم اینه که می‌خوام کاربر با زدن دکمه منو صفحه درج کاربر براش باز شه.

  1. صفحه درج کاربر باید از چه جنسی باشه؟(Qt Quick 2 or QML UI File) در نظر داشته باشید که همگی دارای کد نویسی c++ هستند
  2. چجوری با زدن دکمه این صفحه را باز کنم؟ من با ویجت کار کردم اما QML برای بار اولم هست. دیدم که فایل cpp  و .h را باید بسازیم . با ماکروی Q_PROPERRTY مقدار میدید . بعد هم تو فایل QML باید import کنیم. اما خوب چجوری با زدن دکمه بالا بیاد و بسته بشه؟؟؟

طبق چیزی که اینجا نوشته

Qt Quick UI Forms

از این ویژگی ها پشتیبانی نمی شود

  • JavaScript blocks
  • Function definitions
  • Function calls (except qsTr)
  • Other bindings than pure expressions
  • Signal handlers
  • States in other items than the root item
  • Root items that are not derived from QQuickItem or Item

و از این نوع مدل ها هم پشتیبانی نمی کند

  • Behavior
  • Binding
  • Canvas
  • Component
  • Shader Effect
  • Timer
  • Transform
  • Transition

پس یعنی باید از کوییک 2 استفاده کرد فقط ؟ اما دیدم کوییک 2 را کامپوننت میکنند تو مثال ها.

الان می گیج شدم . برای ساخت صفحات برنامم باید از چی استفاده کنم؟

و در آخر کسی پروژه چند صفحه ای دیتابیسی QML نمیشناسه که من بیشتر ازش یاد بگیرم. پروژه دمو یا سمپل

ممنون

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

2 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 0
در ۱ ساعت قبل، فانوس گفته است :

سلام، من دارم پروژه جدید می‌سازم با QML. سوالم اینه که می‌خوام کاربر با زدن دکمه منو صفحه درج کاربر براش باز شه.

  1. صفحه درج کاربر باید از چه جنسی باشه؟(Qt Quick 2 or QML UI File) در نظر داشته باشید که همگی دارای کد نویسی c++ هستند
  2. چجوری با زدن دکمه این صفحه را باز کنم؟ من با ویجت کار کردم اما QML برای بار اولم هست. دیدم که فایل cpp  و .h را باید بسازیم . با ماکروی Q_PROPERRTY مقدار میدید . بعد هم تو فایل QML باید import کنیم. اما خوب چجوری با زدن دکمه بالا بیاد و بسته بشه؟؟؟

طبق چیزی که اینجا نوشته

Qt Quick UI Forms

از این ویژگی ها پشتیبانی نمی شود

  • JavaScript blocks
  • Function definitions
  • Function calls (except qsTr)
  • Other bindings than pure expressions
  • Signal handlers
  • States in other items than the root item
  • Root items that are not derived from QQuickItem or Item

و از این نوع مدل ها هم پشتیبانی نمی کند

  • Behavior
  • Binding
  • Canvas
  • Component
  • Shader Effect
  • Timer
  • Transform
  • Transition

پس یعنی باید از کوییک 2 استفاده کرد فقط ؟ اما دیدم کوییک 2 را کامپوننت میکنند تو مثال ها.

الان می گیج شدم . برای ساخت صفحات برنامم باید از چی استفاده کنم؟

و در آخر کسی پروژه چند صفحه ای دیتابیسی QML نمیشناسه که من بیشتر ازش یاد بگیرم. پروژه دمو یا سمپل

ممنون

پاسخ سوال اول شما، برای پیاده سازی صفحات رابط کاربری از کیوت کوئیک استفاده کنید. نوع UI فقط برای نمایش محتوا هست و طبق تحقیق خودتون هم که مستند کردین خیلی از ویژگی‌ها رو پشتیبانی نمی‌کنه. در کل گزینه‌ی زیاد جالبی نیست ماهم در پروژه‌هامون ازش استفاده نمی‌کنیم چون نمیشه سفارشی سازی کرد و بیشتر به درد طراحی ویزارد می‌خوره.

پاسخ سوال دوم، از انواع Loader استفاده کنید یا اگه می‌خواین که با عمل کلیک شدن فرمی رو نمایش بدین می‌تونید با تابع createComponent شیء رو بسازید و نمایش بدین.

پاسخ سوال آخر شما، مثال‌هایی که در همین سایت زده شده رو بررسی کنید. هرچند دیتابیسی نیستند اما در رابطه با نحوه‌ی ارتباطات و پیاده سازی انواع فرم‌ها و ارتباطش با سی++ مثال زده شده.

موفق باشید.

  • پسندیدن 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

با سلام

در مورد دیتابیس باید خدمتتون عرض کنم بهتر هست کلاس کار با دیتابیس رو توی سی پلاس پلاس بنویسید و به صورت ماژول ازش استفاده کنید.

الان مثالی نزدیک دستم نیست ولی کلیت به این صورت هست که شما یک کلاس برای کار با دیتابیس میسازید و توی کیو ام ل با اون کار می‌کنید.

برای مثلا کلاس DatanaseManager رو می‌نویسید که تابع AddUser داره و ورودی فیلدهای ساختار داده کاربر رو می‌گیره و توی سی پلاس پلاس شما توی این تابع دیتابیس رو باز می‌کنید و اطلاعات ورودی رو ذخیره می‌کنید . بعد این کلاس DatanaseManager رو که از QObject به ارث برده توی کیو ام ال استفاده می‌کنید البته باید این رو بگم که دو روش برای استفاده هست که یک روش ریجستر کردن کلاس هست و اینطوری باید توی کیو ام ال ایمپورت بشه و ازش شی ساخته بشه و ... که این رو خیلی برای دیتابیس پیشنهاد نمی‌کنم چون اگر مثلا دیتابیستون اس کیو لایت باشه ممکنه چندین کانکشن به یک شی به وجود بیاد در لحظه و مشکلساز بشه و ایمپورت کردن و نمونه ساختن از دیتابیس توی هر فایل کیو ام ال هم اصلا جالب به نظر نمیاد.

بهتره یک شی توی سی پلاس پلاس از کلاس دیتابیس درست کنید و اون رو با QQmlContext بفرستی به کیو ام ال و اینطوری توی تمام قسمت‌های QML در دسترس هست.

اینم یه مثال خیلی کوچیک از فرستادن با QQmlContext

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

  • پسندیدن 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

  • مطالب مشابه

    • توسط کامبیز اسدزاده
      فریمورک نصب کیوت (Qt Installer) مجموعه‌ای از ابزار‌ها و امکانات مورد نیاز را برای ایجاده برنامه‌های قابل نصب بر روی سیستم‌عامل در دسکتاپ فراهم می‌کند که شامل پلتفرم‌های ویندوز، مک و لینوکس است. شما می‌توانید با استفاده از این ابزار برنامه‌های ساخته شده توسط کیوت را به صورت یک پکیج آماده برای نصب بسازید.
    • توسط Saman
      سلام وخسته نباشد 
      میخوام صفحه ایجاد کنم که بتونم اون رو به صورت کشیدن ورق بزنم که یک نمونه کد دارم 
      SwipeView { id: view currentIndex: 1 anchors.fill: parent Item { id: firstPage } Item { id: secondPage } Item { id: thirdPage } } PageIndicator { id: indicator count: view.count currentIndex: view.currentIndex anchors.bottom: view.bottom anchors.horizontalCenter: parent.horizontalCenter } اما من نمیتونم صفحه های اون رو داینامیک کنم و ممکنه چندین صفحه داشته باشم ممنون میشم راهنماییم کنید
    • توسط علی رشیدی
      با سلام.
      در بخشی از برنامه‌ام نیاز دارم کامپوننتی داشته باشم که بتواند در حین اجرا کامپوننت‌های دیگر را در خود نمایش دهد. برای مثال اگر دکمه A کلیک شد، Test1 نمایش داده شود و اگر B کلیک شد Test2.
      برای واضح شدن سوال به کد زیر نگاه کنید:
      //Test1.qml import QtQuick 2.0 Rectangle { id: root color: "blue" Text { text: "Test 1" } } //Test2.qml import QtQuick 2.0 Rectangle { id: root color: "blue" Text { text: "Test 1" } } //main.qml import QtQuick 2.0 import QtQuick.Controls 2.3 ApplicationWindow { //Container for the component Item { id: container } Button { onClicked: //make container display Test1 } Button { onClicked: //make container display Test2 } } container را چگونه پیاده‌سازی کنم، یا اگر component خاصی هست که اینکار را انجام می‌دهد ممنون می‌شوم راهنمایی کنید.
    • توسط miladrahbari
      سلام،
      من در پروژه‌ی خودم از یک ویجت استفاده می‌کنم که داخل آن ویجت یک کلاس mainwindow وجود دارد. در داخل این کلاس من دو تا qquickwidget تعریف کردم تا از المان های درست شده در qml استفاده کنم.
      حالا سوالی که مطرح می‌شود این است. فکر کنید من در داخل یک ویجت ۱۰ بار از این component که در qml وجود دارد استفاده کردم. حالا مثلا مقدار یک component کیو ام ال رو تغییر می‌دهم و شکل ظاهری این المان تغییر می‌کند. وقتی که شکل این المان تغییر می‌کند کل صفحه (ویجت) repaint می‌شود؟؟؟ یا فقط اون المان خاص؟؟؟
      ممنون
×