2012-06-13 8 views
16

मैं क्यूटी का उपयोग कर डेस्कटॉप ऐप बना रहा हूं, मेरी देव मशीन जापानी लोकेल के साथ 7 x64 जीत रही है, मानक सिस्टम फ़ॉन्ट Meiryo है। जीत के अधिकांश 7 यूआई इस फ़ॉन्ट में हैं, हालांकि क्लासिक/पुराने प्रोग्राम जैसे यूई फ़ॉन्ट अनुकूलन विंडो स्वयं एमएस यूआई गोथिक के विभिन्न फ़ॉन्ट का उपयोग करती है। यह मुझे तब तक परेशान नहीं करता जब तक कि मुझे पता चला कि QtCreator एक ही स्थान पर एमएस यूआई गोथिक के साथ अपना ऐप बनाता है, और दूसरे में मेरियो। उदाहरण के लिए, qlabels, qlineedits, qcombobox सभी एमएस यूआई गोथिक का उपयोग करते हैं, लेकिन एक qtableview के साथ एक कस्टम पूर्णर जो बाद में जोड़ता है Meiryo का उपयोग करता है।क्यूटी में सिस्टम डिफ़ॉल्ट फ़ॉन्ट सेटिंग्स कैसे प्राप्त करते हैं?

मैंने क्यूटीक्रिएटर के डिजाइनर में अधिकांश यूआई बनाया, और कोड में जो मैंने जोड़ा। यदि मैं डिज़ाइनर में मेरियो में सभी विगेट्स का फ़ॉन्ट बदलता हूं, तो निश्चित रूप से ऐप मेरियो का उपयोग करेगा, इसलिए सही दिखता है, लेकिन इस मामले में मैं क्यूटी को अपने लिए स्वचालित रूप से जो भी सिस्टम का डिफ़ॉल्ट फ़ॉन्ट चुनता हूं क्योंकि जीत 7 केवल एकमात्र नहीं होगा मंच मैं इस कार्यक्रम का उपयोग करूंगा।

मेरी चिंता और भी बढ़ी है कि क्यूप्लिकेशन :: फ़ॉन्ट() एमएस यूआई गोथिक लौटाता है, जो मेरे मामले में गलत है। निस्संदेह मैं QApplication :: setFont() का उपयोग करके ऐप-वाइड फ़ॉन्ट सेट कर सकता हूं लेकिन यह micromanaging फोंट के बिना मूल रूप से दिखने के पूरे उद्देश्य को हरा देता है।

तो मेरे सवाल का,,

  • अगर यह एक क्यूटी बग मैं इसे कैसे बढ़ाने के बारे में जाना है है

    1. कैसे क्यूटी प्रणाली डिफ़ॉल्ट फ़ॉन्ट तय करते हैं और?
    2. मुझे .ui फ़ाइलों का उपयोग कैसे करना चाहिए और अभी भी मेरा यूआई रनटाइम में डिफ़ॉल्ट सिस्टम फ़ॉन्ट का उपयोग कर सकता है?

    कुछ स्पष्टीकरण और तथ्यों मैं

    1. पाया मैं अपने ऐप हर पाठ के लिए प्रणाली डिफ़ॉल्ट फ़ॉन्ट उपयोग करना चाहते हैं।

    2. This discussion ने कहा कि डिज़ाइनर चाहे आप चाहे या नहीं, फ़ॉन्ट जानकारी जोड़ देंगे। तो क्यूटी सिस्टम डिफ़ॉल्ट फ़ॉन्ट के बजाय इस जानकारी का सम्मान करेगा। कम से कम किसी ने इस जानकारी को हटाने का उल्लेख मैन्युअल रूप से रनटाइम में क्यूटी पिक सिस्टम डिफ़ॉल्ट फ़ॉन्ट बनाना चाहिए।

    3. मेरी देव मशीन में QApplication :: font() WRONG डिफ़ॉल्ट फ़ॉन्ट देता है। लेकिन कोड में बाद में एक QTableView जो मैं जोड़ता हूं, सही फ़ॉन्ट का उपयोग कैसे करता है? यह जानकारी कहां मिली?

    तो अगर मैं कहाँ QTableView यह जानकारी पाता है लगता है, मैं इसे मुख्य में प्राप्त कर सकते हैं, और यह एप्लिकेशन विस्तृत सेट QApplication :: setFont साथ()। फिर क्या छोड़ा गया है मैन्युअल रूप से सभी फ़ॉन्ट जानकारी को हटा रहा है, तो उम्मीद है कि यह काम करेगा। लेकिन ऐसा इसलिए है कि हम पहली जगह क्यूटी का उपयोग क्यों नहीं करते हैं?

  • +0

    ps क्यूटी डेमो कार्यक्रमों इन लक्षणों के साथ-साथ दिखाया पाने के लिए, और मैं द्विआधारी QtSDK का उपयोग नहीं करते, मैं क्यूटी अपने आप प्रत्येक के लिए संकलित x86 और x64 और QtCreator (द्विआधारी वितरित एक) से दोनों का उपयोग करें। मेरा टूलचेन msvc2010 एक्सप्रेस है। – Evan

    +0

    अनुमान है कि कोई भी नहीं जानता है – Evan

    +0

    अन्यथा निर्दिष्ट किए बिना, Qt पाठ प्रस्तुत करने के लिए डिफ़ॉल्ट सिस्टम फ़ॉन्ट का उपयोग करता है। [यह पोस्ट] (http://qt-project.org/faq/answer/how_does_qt_pick_a_font_for_the_application) विभिन्न ऑपरेटिंग सिस्टम पर डिफ़ॉल्ट रूप से उपयोग किए गए फ़ॉन्ट्स पर संक्षेप में चर्चा करता है। शायद मैं उलझन में हूं, अगर आप सिर्फ ओएस के लिए डिफ़ॉल्ट सिस्टम फ़ॉन्ट चाहते हैं, तो कुछ भी न करें और यही आपको मिल जाएगा ... अगर आपको यह जानने की ज़रूरत है कि यह कारण किसी कारण से क्या है, [इसे आजमाएं] (http://lists.trolltech.com/qt-interest/2002-10/thread00280-0.html)। –

    उत्तर

    9

    मैं दो संभव समाधान के बारे में सोच सकते हैं:

    1. आप अपने आवेदन के साथ एक संसाधन फ़ाइल के रूप में एक फ़ॉन्ट, इस तरह से सभी प्लेटफार्मों कि फॉन्ट परवाह किए बिना वर्तमान प्रणालियों डिफ़ॉल्ट फ़ॉन्ट का उपयोग करेगा पैक कर सकते हैं।

    2. क्यूफॉन्ट क्लास में defaultFamily() नामक एक विधि है। इसका उपयोग करके आप अपने पूरे QApplication के लिए मैन्युअल रूप से डिफ़ॉल्ट फ़ॉन्ट सेट कर सकते हैं।

    एक उदाहरण (मुख्य विधि):

    QApplication application(argc, argv); 
    QFont font; 
    font.setFamily(font.defaultFamily()); 
    application.setFont(font); 
    ...rest of your code... 
    
    +0

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

    1

    क्यूटी, QMenu के लिए फोंट पाने के लिए QMessageBox आदि Windows API SystemParametersInfo फोन करेगा, और GetStockObject का उपयोग डिफ़ॉल्ट सिस्टम फ़ॉन्ट मिलता है। कुछ विजेट्स में विशेष फ़ॉन्ट होता है जो सिस्टम डिफ़ॉल्ट के लिए अलग होता है। मुझे लगता है कि क्यूटी सही काम कर रही है, लेकिन डिफ़ॉल्ट जापानी/चीनी सेरिफ़ फ़ॉन्ट हायडीपीआई मॉनीटर पर खराब दिखता है।

    बस QFont QApplication::font (const char * className) का उपयोग सही फ़ॉन्ट (आपके मामले में Meryo), इस तरह के रूप में qApp->setFont(QApplication::font("QMenu"))

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