2015-04-28 8 views
6

मैं QFont, QFontMetrics या 0 जैसे कुछ का उपयोग करके फ़ॉन्ट फ़ाइल की लाइन स्पेसिंग डिफ़ॉल्ट मान बदलने का तरीका ढूंढने का प्रयास कर रहा हूं। मैं एक बाध्य आयत में कुछ पाठ खींचने के लिए QPainter::drawText का उपयोग कर रहा हूं।क्यूफॉन्ट लाइन स्पेसिंग की अनुमति नहीं देता है या मैन्युअल रूप से सेट किया जा सकता है

यह अजीब बात है कि QFont फ़ॉन्ट कर्नेल बदलने के लिए अनुमति देता है और यहां तक ​​कि कुछ खिंचाव ऑपरेशन और अक्षर अंतर भी है लेकिन लाइनों के बीच डिफ़ॉल्ट स्थान को बदलने के लिए कुछ भी नहीं है। मैंने QTextLayout का उपयोग करके कुछ आंशिक समाधान खोजे और पाया लेकिन कोई भी ठीक से काम नहीं कर रहा था।

मुझे QPainter का उपयोग करने की आवश्यकता है क्योंकि मैं ओपनजीएल के साथ प्रस्तुत किए जाने वाले टेक्स्ट के साथ बनावट उत्पन्न करता हूं।

मेरे लिए प्रयास करने के लिए और अधिक विचारों की तलाश में!

अद्यतन

मैंने पाया कि मैं QPainter उपयोग कर सकते हैं एक QStaticText जो HTML पाठ स्वरूपण के लिए अनुमति देता है, QTextDocument के लिए इसी तरह आकर्षित करने के लिए। हालांकि, सीएसएस स्टाइल QTextDocument (bug report) की तरह काम नहीं करता है ... इसलिए अभी भी कोई अग्रणी नहीं है लेकिन मुझे उम्मीद है कि यह मुझे सही रास्ते पर रखेगा।

हल

मुझे मिल गया है कि मैं क्या, QTextDocument का उपयोग कर मिखायलो तरह का सुझाव दिया है चाहता था। Link to solution

उत्तर

3

QFontMetrics विशेष रूप से बहु-पंक्ति पाठ के लिए डिज़ाइन नहीं किया गया था।

QTextDocument का उपयोग करें। आप QPainter का उपयोग करके भी बहु-पंक्ति और समृद्ध टेक्स्ट प्रिंट कर सकते हैं। समाधान देखें कि कैसे use QPainter with QTextDocument

+0

यह इरादा की तरह काम करता है। वास्तव में भयानक Mykhaylo :)। सहायता के लिए धन्यवाद! –

0

ऐसा लगता है कि यहां बहुत कुछ नहीं किया जा सकता है।

QFontMetrics::lineSpacing आपको जो चाहिए वह देता है लेकिन यह केवल पढ़ने के लिए है।

यह फ़ॉन्ट ऊंचाई और अग्रणी का योग है। आप ऊंचाई समायोजित कर सकते हैं - इसे QFont कन्स्ट्रक्टर में सेट करें। लेकिन आप अग्रणी सेट नहीं कर सकते हैं।

कुछ लोग लाइनों के बीच स्थान बढ़ाने के लिए स्ट्रिंग के अंत में \n जोड़ते हैं लेकिन निश्चित रूप से यह हमेशा एक अच्छा समाधान नहीं होता है।

+0

त्वरित awnser @demonplus के लिए धन्यवाद। मैं क्यूफॉन्ट दस्तावेज की जांच करूंगा और देख सकता हूं कि आपने जो सुझाव दिया है वह मेरी समस्या हल करता है। मैं परिणाम वापस पोस्ट करूंगा :) –

+0

मैं कोई क्यूफॉन्ट कन्स्ट्रक्टर नहीं ढूंढ सकता जो ऊंचाई पैरामीटर लेता है ... नया लाइन वर्ण जोड़ना शब्द लपेटता है ताकि यह मेरे लिए कोई समाधान न हो। लेकिन आपके समय @demonplus के लिए फिर से धन्यवाद;) –

+0

क्यूफॉन्ट :: क्यूफॉन्ट (कॉन्स क्यूस्ट्रिंग और परिवार, int pointSize = -1, int weight = -1, bool italic = false) - जब आप पॉइंटसाइज बदल देंगे, तो फ़ॉन्ट की ऊंचाई – demonplus

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

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