2010-06-15 12 views
12

जब आप क्यूटी का उपयोग करके कोई एप्लिकेशन लिखते हैं, तो क्या यह तुरंत विभिन्न ऑपरेटिंग सिस्टम में चलाया जा सकता है? और (यदि मैं गलत हूं तो मुझे सही करें) आपको अपने सभी आवेदनों को निष्पादित करना चाहते हैं, जहां आप सभी अलग-अलग प्लेटफ़ॉर्म में पहले से स्थापित क्यूटी स्थापित करने की आवश्यकता नहीं है?क्यूटी कैसे काम करता है (बिल्कुल)?

यह वास्तव में कैसे काम करता है? क्या Qt वांछित प्लेटफॉर्म पर संकलित करता है, या क्या यह कुछ "dlls" (libs) को बंडल करता है, या यह कैसे करता है? क्या यह एक जावा अनुप्रयोग प्रोग्रामिंग से अलग है, जो क्रॉस-प्लेटफॉर्म चलाता है।

आप अजगर का उपयोग करते हैं अजगर बाइंडिंग के साथ एक क्यूटी आवेदन लिखने के लिए, पायथन स्थापित किया है करने के लिए अपने अंत उपयोगकर्ता की जरूरत है?

+2

इस लिंक प्रदान करने के लिए उपेक्षित वर्तमान उत्तरों की दोनों तो मैं लूंगा: http://doc.qt.nokia.com/4.7-snapshot/deployment.html यह और विवरण कैसे तैनात करने के लिए (कुछ सभी प्लेटफॉर्म पर संकलित सेटिंग्स की आवश्यकता हो सकती है)। लेकिन यह अभी भी हर प्लेटफ़ॉर्म पर संकलन करने की आवश्यकता है जिसे आप इसे चलाने के लिए चाहते हैं। –

+0

आप py2exe के बारे में टिप्पणी कर रहे हैं, क्या लिनक्स के लिए कुछ ऐसा ही मौजूद है? –

+0

@ डेविड: मेरा मतलब पुस्तकालयों (जिन्हें प्रत्येक मंच के लिए संकलित या डाउनलोड करने की आवश्यकता है), लेकिन हाँ आप सही हैं :) –

उत्तर

12

पीईक्यूटी [और इसके ओपन सोर्स चचेरे भाई पायसाइड] पाइथन के लिए एक महान क्रॉस-प्लेटफार्म क्यूटी बाध्यकारी हैं, लेकिन यह किसी भी पैकेजिंग/इंस्टॉलर रखरखाव के बिना सभी प्लेटफार्मों के लिए आपके आवेदन को शिपिंग के लिए एक जादू समाधान नहीं है। मुझे लगता है कि शायद आप कुछ जादू की उम्मीद कर रहे हैं।

क्यूटी ++ एक पार मंच सी में लिखे पुस्तकालय है। इसका मतलब है, आप एक बार अपने सी ++ या पायथन (या बाइंडिंग के साथ अन्य भाषा) कोड लिख सकते हैं, और एक "विंडो" (एक फॉर्म, एक संवाद बॉक्स, स्क्रीन पर कुछ) बना सकते हैं और इसे नियंत्रण (बटन, और सभी के साथ पॉप्युलेट कर सकते हैं)) और कैसे बटन विंडोज, लिनक्स में बना रहे हैं में मंच मतभेद से निपटने के लिए नहीं, और मैक ओएस एक्स

क्योंकि यह एक पुस्तकालय है, यह कई मायनों में पैक किया जा सकता। यह "स्थिर रूप से जुड़ा हुआ" (आपके निष्पादन योग्य/बाइनरी/ऐप में बनाया गया) या "गतिशील रूप से जुड़ा हुआ" (विंडोज़ में एक डीएलएल के रूप में जाना जाता है, एक साझा लाइब्रेरी या यूनिक्स/लिनक्स या फ्रेमवर्क के रूप में, मैक ओएस एक्स में) हो सकता है। यह कंप्यूटर पर हमेशा "स्थापित" नहीं होता है, जब तक यह एक साझा लाइब्रेरी न हो।

यहां तक ​​कि जब यह कंप्यूटर पर "स्थापित" होता है, तब भी उस कंप्यूटर पर कई संस्करण मौजूद हो सकते हैं, और इसलिए यह आपके कंप्यूटर के विस्तार के रूप में सोचने के लिए उचित नहीं है, बल्कि किसी एप्लिकेशन के लिए एक एक्सटेंशन (ए कार्यक्रम) अपने कंप्यूटर पर।

यदि आप क्यूटी के लिए पाइथन बाइंडिंग का उपयोग करते हैं, तो आपके एप्लिकेशन के लिए आपके इंस्टॉलेशन पैकेज में क्यूटी बाध्यकारी की बाइनरी फाइलें (पायथन एक्सटेंशन), ​​पाइथन निष्पादन योग्य और मूल पुस्तकालयों सहित मूल पायथन रनटाइम पर्यावरण और आपके प्रोग्राम के स्रोत कोड शामिल करने की आवश्यकता है । इनमें से अधिकांश को एक "बंडल" में पैकेज करना संभव है। उदाहरण के लिए, मैक ओएस एक्स पर, इसे आसानी से ".app" बंडल में और विंडोज़ और लिनक्स पर रखा जा सकता है, मुझे विश्वास है कि पैकेजिंग और इंस्टॉलेशन टूल्स हैं जो आपको आसानी से ऐसा करने में मदद कर सकते हैं।

भले ही आपको केवल एक बार अपने आवेदन के लिए यूजर इंटरफेस कोड लिखने की आवश्यकता होगी, फिर भी आपको कम से कम तीनों प्राथमिक प्लेटफॉर्म पर एप्लिकेशन को शिप करने की क्षमता नहीं मिलेगी, कम से कम इंस्टॉलर की इमारत के बिना या प्रत्येक मंच के लिए अलग से पैकेजिंग। उपयोगकर्ता विंडोज या मैक ओएस एक्स के लिए एक सेटअप/इंस्टॉल पैकेज डाउनलोड करने की उम्मीद करते हैं, और शायद यूनिक्स/लिनक्स के लिए यह आपके द्वारा स्थापित वितरण पर आगे निर्भर करता है।

Update thanks to AdamW for this nokia link providing deployment information

+0

वॉरेन, इतने सारे स्तरों में एक स्पष्ट उत्तर के लिए धन्यवाद। मैं इस सवाल से पूछ रहा हूं क्योंकि मैं पाइथन ऐप के बारे में सोच रहा था, और क्रॉस-प्लेटफार्म जाने के बारे में सोचा था, लेकिन मैं डेस्कटॉप प्रोग्रामिंग में नया हूं (मैं मुख्य रूप से वेब विकसित करता हूं)। मैं जीटीके, क्यूटी और एपसेलरेटर के साथ आया था और मैं वास्तव में यह समझने की कोशिश कर रहा था कि इनमें से कौन सा समाधान मेरे लिए आदर्श होगा जो कि वे जो पेशकश करते हैं उसके आधार पर। –

+0

पायथन आपको भाषा (सीखने में आसान, और शक्तिशाली) में एक बड़ा लाभ देता है लेकिन पाइथन का एक क्षेत्र जो बेहद खंडित है वह "कौन सा जीयूआई" है? सवाल। आपको शायद WxWidgets के लिए पाइथन बाइंडिंग पर भी विचार करना चाहिए। कुछ लोग कहते हैं कि यदि TkInter (tcl/tk) gui (जो मुझे लगता है बकवास है) पहले शिप नहीं किया गया था, तो WxPython डिफ़ॉल्ट पायथन जीयूआई होता। यह विंडोज, मैक और लिनक्स को भी संभालता है, और इसमें एक बड़ा सक्रिय समुदाय है। –

+0

@ कुछ अगर आप एक मार्कअप फ़ाइल की तलाश में हैं जो क्रॉस-प्लेटफार्म भाषा-अज्ञात है जैसे कि क्यूटी के लिए एचटीएमएल/सीएसएस की तरह QML को जांचना सुनिश्चित करें। –

15

क्यूटी (आदर्श) स्रोत अनुकूलता, नहीं दोहरी संगतता प्रदान करता है। आपको अभी भी प्रत्येक प्लेटफ़ॉर्म के लिए अलग-अलग एप्लिकेशन को संकलित करना होगा, और उचित गतिशील क्यूटी पुस्तकालयों का उपयोग करना होगा (जिसे अलग से संकलित करने की भी आवश्यकता है, और कुछ प्लेटफ़ॉर्म-विशिष्ट कोड हैं)।

आपके अंतिम प्रश्न के लिए, उपयोगकर्ता को पायथन, क्यूटी पुस्तकालयों और बाध्यकारी पुस्तकालय (उदा। पीईटीटी) की आवश्यकता होगी, लेकिन इन्हें बंडल करने के कई तरीके हैं।

+0

तो, उन्हें बंडल किए बिना, मैं चाहता था एक (केवल एक उदाहरण) स्थापित करने के लिए एक 4 एमबी फ़ाइल है, और 40 एमबी की तरह सबकुछ बंडल करना - जावा होने पर जावा को बंडल करना। क्या मैं सही हू? –

+1

सटीक संख्याओं के बारे में नहीं जानते, लेकिन यह मूल रूप से सही है। यदि आप जानते हैं कि उपयोगकर्ता के पास पहले से ही सही क्यूटी गतिशील पुस्तकालय हैं, तो आपको उन्हें बंडल करने की आवश्यकता नहीं है। –

5

समस्या "स्थापित" की आपकी परिभाषा है। क्यूटी के काम करने के लिए, निष्पादन योग्य को उचित पुस्तकालयों तक पहुंच प्राप्त करनी होगी।

पाठ्यक्रम एक मंच के लिए एक अलग निष्पादन योग्य और पुस्तकालयों ( Qt docs देखें) का उत्पादन किया जाना है कि

अजगर के बारे में, एक पायथन निष्पादन यदि आप चलाने के लिए कर रहे हैं आप इसे स्थापित करने की (रास्ते से अधिक पारंपरिक वस्तु के रूप में) है। उदाहरण के लिए, जब तक आप Windows में py2exe के साथ नहीं चल रहे हैं।

+0

तो, क्यूटी इन पुस्तकालयों के लिए मेरे लिए सबकुछ संभालती है, प्रत्येक प्लेटफार्म के लिए मैं एक आवेदन तैनात करता हूं? मैं एक क्रॉस-प्लेटफार्म बना देता हूं, और इसे लिनक्स और विंडोज पर तैनात करना चाहता हूं, क्या यह इन libs को एक पारदर्शी तरीके से बंडल करता है? –

+0

नहीं, क्यूटी सिर्फ उसी स्रोत से उत्पन्न करने के साधन प्रदान करता है, अलग-अलग प्लेटफार्मों में चलने वाली विभिन्न बाइनरी। आपको अभी भी प्रत्येक मंच के लिए अलग-अलग बाइनरी/इंस्टॉलर प्रदान करना होगा। प्लेटफॉर्म का पता लगाने और उचित संस्करण स्थापित करने के लिए आपके पास एक ही इंस्टॉलर हो सकता है, लेकिन मैं उस दृष्टिकोण के लिए कोई लाभ देखने में विफल रहता हूं। –

+0

मेरा बुरा, मुझे पता है कि यह विभिन्न बाइनरी बनाने जा रहा है। मैं सिर्फ यह जानना चाहता हूं कि क्यूटी ने उन्हें मेरे लिए बनाया है या नहीं। –

संबंधित मुद्दे