QT:QGraphicsTextItem对齐字符到左上角

时间:2018-08-14 15:44:12

标签: qt position alignment qgraphicstextitem

我想绘制一个与父级的左上角对齐的字符。

QGraphicsTextItem * tItem = new QGraphicsTextItem(parent);
tItem->setPlainText("a"); 
tItem->setPos(QPointF(0,0));

下面的图片显示了我的代码的输出(灰色矩形是QGraphicsTextItem的父对象)

结果:

Result

我想得到这样的结果:

我的梦想结果:

My dream result

我尝试使用Qt :: AlignLeft和Qt :: AlignTop,但无济于事。

1 个答案:

答案 0 :(得分:0)

解决方案是在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();
}

enter image description here