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

کامپوننت‌ (Component) با قابلیت نمایش جزء‌های مختلف در زمان اجرا


سوال

با سلام.

در بخشی از برنامه‌ام نیاز دارم کامپوننتی داشته باشم که بتواند در حین اجرا کامپوننت‌های دیگر را در خود نمایش دهد. برای مثال اگر دکمه 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 خاصی هست که اینکار را انجام می‌دهد ممنون می‌شوم راهنمایی کنید.

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


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

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

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

  • 1

سلام،

چرا از انواع نگه‌دارنده‌هایی مثل SwipeView، StackLayout، StackView یا Loader استفاده نمی‌کنید؟

کد‌های زیر رو به عنوان جزء‌ها (Component) در نظر بگیرید:

کد مربوط به First.qml

import QtQuick 2.11

Rectangle {
    id: root
    color: "green"
    width: 500
    height: 500
    Text {
        text: "Component One"
    }
}

کد مربوط به Second.qml

import QtQuick 2.11

Rectangle {
    id: root
    color: "red"
    width: 500
    height: 500
    Text {
        text: "Component Two"
    }
}

در نهایت کد مربوط به main.qml به صورت زیر خواهد بود که توسط StackLayout به مدیریت اجزا می‌پردازید:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    ColumnLayout {
        width: parent.width

        RowLayout {
            
            width: parent.width

            Button {
                text: "First"
                onClicked: {
                    layout.currentIndex = 0
                }
            }
            Button {
                text: "Second"
                onClicked: {
                    layout.currentIndex = 1
                }
            }
        }

        StackLayout {
            id: layout
            currentIndex: 0

            //Define First Component
            First  { /*ToDo...*/ }
            
            //Define Second Component            
            Second { /*ToDo...*/ }
        }
    }
}

 

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


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

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


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

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

×
×
  • جدید...