मैं एक प्लॉट के लिए धुरी लेबल चाहता हूं जो मैं बना रहा हूं, और स्वाभाविक रूप से वाई-अक्ष लेबल लंबवत उन्मुख होना चाहिए। मुझे यकीन है कि QwtPlot
ऐसा करता है, लेकिन मैं चीजों को प्रकाश रखने की कोशिश कर रहा हूं इसलिए मैं अभी एक साधारण QWidget
+ QPainter
का उपयोग कर रहा हूं। मुझे प्रलेखन में QLabel
अभिविन्यास बदलने का कोई तरीका नहीं मिला। कुछ समाधान this 2002 thread में दिए गए हैं, लेकिन मुझे ऐसा कुछ चाहिए जो ऐसा हैक जैसा प्रतीत नहीं होता है। मैं अब क्यूटी 4.8 का उपयोग कर रहा हूं, क्या QPainter::drawText()
से इसे अलग करने का कोई तरीका नहीं है?वर्टिकल QLabel, या समकक्ष?
उत्तर
तो वास्तव में मैं इस लक्ष्य को हासिल करने के लिए किसी भी आसान तरीका खोजने और उवे RATHMANN के QWT कोड को देखने पर छोड़ दिया वास्तव में वह अपने QwtPainter::drawText
आवरण समारोह में QPainter::drawText()
का उपयोग करता है, और एक QTransform
, रोटेशन प्राप्त करने के लिए QwtScaleDraw::labelTransformation
में। इसलिए मैंने इन्हें निम्नानुसार एक साथ रखा है:
void LabelWidget::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.setPen(Qt::black);
//... Need an appropriate call to painter.translate() for this to work properly
painter.rotate(90);
painter.drawText(QPoint(0,0), _text);
}
को QPixmap की आवश्यकता नहीं है, यह पता चला है।
QLabel
में कोई भी आसान काम नहीं है जो आप चाहते हैं, नहीं। तो:
उपयोग
QGraphicsView
, जो आप आइटम को मनचाहे ढंग को बदलने के लिए अनुमति देता है।QPainter
का उपयोग करें। शायद सबसे आसान तरीकाQPixmap
में घुमाए गए पाठ को आकर्षित करना होगा, फिर इसे अपनेQLabel
पर सेट करें।
आप एक नया QGraphicsScene
भी बना सकते हैं, इसे QLabel में जोड़ें और फिर इसे घुमाएं। इस तरह:
QLabel* label = QLabel("Y axis");
QGraphicsScene scene;
QGraphicsProxyWidget * proxy = scene.addWidget(label);
proxy->rotate(-45);
QGraphicsView view(&scene);
view.show();
similar example पर एक नजर डालें (उत्पादन छवि एक गलत अनुपात है, direct URL को देखो)।
इस प्रयोग करके देखें:
#ifndef VERTICALLABEL_H
#define VERTICALLABEL_H
#include <QLabel>
class VerticalLabel : public QLabel
{
Q_OBJECT
public:
explicit VerticalLabel(QWidget *parent=0);
explicit VerticalLabel(const QString &text, QWidget *parent=0);
protected:
void paintEvent(QPaintEvent*);
QSize sizeHint() const ;
QSize minimumSizeHint() const;
};
#endif // VERTICALLABEL_H
/// सीपीपी
#include "verticallabel.h"
#include <QPainter>
VerticalLabel::VerticalLabel(QWidget *parent)
: QLabel(parent)
{
}
VerticalLabel::VerticalLabel(const QString &text, QWidget *parent)
: QLabel(text, parent)
{
}
void VerticalLabel::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.setPen(Qt::black);
painter.setBrush(Qt::Dense1Pattern);
painter.rotate(90);
painter.drawText(0,0, text());
}
QSize VerticalLabel::minimumSizeHint() const
{
QSize s = QLabel::minimumSizeHint();
return QSize(s.height(), s.width());
}
QSize VerticalLabel::sizeHint() const
{
QSize s = QLabel::sizeHint();
return QSize(s.height(), s.width());
}
यदि आप 'painter.rotate (270)' पर कॉल करने से पहले 270 तक घूमना चाहते हैं, तो 'painter.translate (sizeHint() चौड़ाई(), आकार संकेत() ऊंचाई()) कॉल करें। – metal
उन क्यूटी न्यूबीज (मेरे जैसे) के लिए: आप क्यूटी निर्माता में इस वर्टिकल लेबल के लिए प्लेसहोल्डर के रूप में एक सामान्य लेबल का उपयोग कर सकते हैं, और इसे अपने कस्टम प्रकार में प्रचारित कर सकते हैं। यहां देखें: http://doc.qt.io/qt-5/designer-using-custom-widgets.html – eresonance
यहाँ मुस्तफा के कार्यान्वयन का एक संस्करण है।
void VerticalLabel::paintEvent(QPaintEvent*)
{
QPainter painter(this);
// painter.translate(sizeHint().width(),0);
// painter.rotate(90);
painter.translate(0,sizeHint().height());
painter.rotate(270);
painter.drawText(QRect (QPoint(0,0),QLabel::sizeHint()),Qt::AlignCenter,text());
}
मूल रूप से मैं स्टाइलशीट संरक्षित करने के लिए setPen और setBrush को हटा दिया है और मैं drawText की एक अधिभार बिंदु के बजाय रेक्ट का उपयोग करता है इस्तेमाल किया है। यह पाठ के अंदर '\ n' रखने या ध्वज के रूप में WordWrap का उपयोग करने की अनुमति देता है।
- 1. QLabel
- 2. qlabel केंद्र
- 3. ट्रांसपैपेंट QLabel
- 4. QLabel setText अन्य विधि
- 5. std :: istream या समकक्ष
- 6. क्यूटी - एक QLabel
- 7. एंड्रॉइड ग्रिड व्यू या समकक्ष
- 8. QLabel आकार बदलने का पाठ
- 9. वर्टिकल हिस्टोग्राम
- 10. वर्टिकल स्प्लिट
- 11. वर्दीग्रीड वर्टिकल
- 12. वर्टिकल स्प्लिटिंग
- 13. एक्शनस्क्रिप्ट में समकक्ष बीआईआईडी समकक्ष?
- 14. पुन: संरचित पाठ में मैक्रो या समकक्ष?
- 15. क्या कोई 'गिट sed' या समकक्ष है?
- 16. PHP के समकक्ष दोस्त या आंतरिक
- 17. एक क्वेरी अनुकूलित करें या LINQ समकक्ष
- 18. "या" लिंकक में समकक्ष() lambda अभिव्यक्ति
- 19. जावाएफएक्स एचटीएमएल स्टाइल (या समकक्ष) लेबल
- 20. किसी .NET वेब क्लाइंट या समकक्ष
- 21. QLabel को हाइपरलिंक की तरह व्यवहार करना
- 22. एसक्यूएल के समकक्ष Django समकक्ष
- 23. UITextField वर्टिकल संरेखण
- 24. Matlab/Octave समकक्ष या आर 'विलय' (या 'expand.grid') क्या है?
- 25. जावा वर्टिकल लेआउट?
- 26. नेट्रू विपरीत वर्टिकल विंडो
- 27. वर्टिकल सेपरेटर कैसे जोड़ें?
- 28. पॉपअप कंट्रोल वर्टिकल एलाइनमेंट
- 29. वर्टिकल बार (|) मान्य सीएसएस, या फ़ायरफ़ॉक्स-विशिष्ट है?
- 30. .NET समकक्ष?
क्या आप एक QPixmap में घुमाए गए पाठ को आकर्षित करने के बारे में विस्तृत जानकारी दे सकते हैं? मुझे किसी भी तरह का 'QPixmap :: drawText()' फ़ंक्शन नहीं दिख रहा है। –
आप सभी QPaintDevices को आकर्षित करने के लिए QPainter का उपयोग करते हैं, जिनमें से QPixmap एक है। –