QT:QGraphicsTextItem 对齐字符到左上角
QT : QGraphicsTextItem alignment char to top-left corner
我想绘制一个对齐到parent左上角的字符。
QGraphicsTextItem * tItem = new QGraphicsTextItem(parent);
tItem->setPlainText("a");
tItem->setPos(QPointF(0,0));
下图显示了我的代码的输出(灰色矩形是 QGraphicsTextItem 的父级)
结果:
我想得到这样的结果:
我的梦想结果:
我尝试使用 Qt::AlignLeft 和 Qt::AlignTop 但无济于事。
解决办法是把setDocumentMargin(0)
改成QTextDocument
,如果只放字母"a"好像不是解决办法,好像有垂直偏移, 但实际上它不是偏移量而是大写字母具有更高的高度。
示例:
#include <QApplication>
#include <QGraphicsTextItem>
#include <QGraphicsView>
#include <QTextDocument>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
auto parent = scene.addRect(QRectF(0, 0, 100, 100), QPen(Qt::red), QBrush(Qt::blue));
auto * tItem = new QGraphicsTextItem(parent);
tItem->setPlainText("aAbB");
tItem->document()->setDocumentMargin(0);
view.show();
return a.exec();
}
我想绘制一个对齐到parent左上角的字符。
QGraphicsTextItem * tItem = new QGraphicsTextItem(parent);
tItem->setPlainText("a");
tItem->setPos(QPointF(0,0));
下图显示了我的代码的输出(灰色矩形是 QGraphicsTextItem 的父级)
结果:
我想得到这样的结果:
我的梦想结果:
我尝试使用 Qt::AlignLeft 和 Qt::AlignTop 但无济于事。
解决办法是把setDocumentMargin(0)
改成QTextDocument
,如果只放字母"a"好像不是解决办法,好像有垂直偏移, 但实际上它不是偏移量而是大写字母具有更高的高度。
示例:
#include <QApplication>
#include <QGraphicsTextItem>
#include <QGraphicsView>
#include <QTextDocument>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
auto parent = scene.addRect(QRectF(0, 0, 100, 100), QPen(Qt::red), QBrush(Qt::blue));
auto * tItem = new QGraphicsTextItem(parent);
tItem->setPlainText("aAbB");
tItem->document()->setDocumentMargin(0);
view.show();
return a.exec();
}