私が作っているプロットの軸ラベルが必要です。もちろん、y軸ラベルは垂直方向に向けるべきです。私はかなり確信していますQwtPlot
これを行いますが、私は物事を明るく保つために私はちょうど単純なものを使用しています。QWidget
+ QPainter
今のところです。ドキュメントでQLabel
の方向を変更する方法がありませんでした。いくつかの解決策はthis 2002 threadで与えられていますが、私はそのようなハックのように見えないものが欲しいです。私は今Qt 4.8を使用していますが、実際にQPainter::drawText()
以外でこれを行う方法はありませんか?縦型QLabelまたはそれに相当する?
答えて
だから確かに、私は確かに彼はQwtScaleDraw::labelTransformation
で、回転を達成するために彼のQwtPainter::drawText
ラッパー関数でQPainter::drawText()
を使用し、QTransform
これを達成するための任意の簡単な方法を見つけること、そしてウーヴェRathmannのQWTコードを経由探しをあきらめました。だから私はちょうどこれらを一緒に入れました:
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();
は(
direct URLを見て、間違った比率を有する出力画像)
similar exampleを見てみましょう。これを使用して
試してみてください。ここでは
#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
/// CPP
#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()。width()、sizeHint()。height())'を呼び出します。 – metal
Qt初心者(私のような)について:QtクリエイターのこのVerticalLabelのプレースホルダーとして通常のラベルを使用し、カスタムタイプに昇格させるだけです。こちらをご覧ください: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を除去しており、私の代わりに点のRECTを利用のDrawTextのオーバーロードを使用しています。これにより、テキストの中に '\ n'を置くか、WordWrapをフラグとして使用することができます。
- 1. その他の列挙型に相当しますか?
- 2. メテオコレクションの1対多の関係(またはそれに相当するNoSQL Mongo)
- 3. SQL Serverは、MySQLのenumデータ型に相当しますか?
- 4. Javaにはstd :: bitset相当(またはそれに類するもの)がありますか?
- 5. 縦型アライメントラッパー
- 6. 縦型デバイダCSS
- 7. Android縦型タブアイテム
- 8. Android縦型スイッチウィジェット
- 9. 縦型ヒストグラム
- 10. .settle()(またはそれに相当するもの)の中で約束事を破棄
- 11. クロージャー原子に相当するC#アトム参照型
- 12. mysqlのデータ型に相当する文字列
- 13. ostream相当の%.2fまたは%.2lf
- 14. StataローカルまたはグローバルマクロのR相当
- 15. JSON - これに相当するXML CDATAはありますか?
- 16. Flash/ActionscriptのRequest.Formに相当します!それも可能ですか?
- 17. Pythonに相当するVisual Studioプロジェクト(またはソリューション)
- 18. HttpResponse.TransmitFileのリダイレクトまたはPHPに相当する?
- 19. Symfony 1.4のsymfony 2のpath()またはurl()に相当する
- 20. 奇妙な縦線、それは
- 21. これに相当するnodejs .htaccess
- 22. HashSetまたはインデックスを返すHashSet.Containsに相当しますか?
- 23. SprintfはMathematicaに相当しますか?
- 24. Passport.jsはPythonに相当しますか?
- 25. DoEventsはC++に相当しますか?
- 26. XmlAttribute/XmlElementはJavaScriptSerializerに相当します
- 27. プライムフェイスはdjangoに相当しますか?
- 28. Symfony2はbefore_filterに相当しますか?
- 29. コアデータはsqliteクエリに相当します
- 30. .NETはGetLastInputInfoに相当しますか?
QPixmapに回転されたテキストを描画する方法を詳しく説明できますか? QPixmap :: drawText()関数は何も表示されません。 –
QPainmapを使用するすべてのQPaintDevicesに描画するには、QPainterを使用します。 –