• 16483阅读
  • 7回复

请问怎样设置 QGraphicsTextItem 的对齐方式? [复制链接]

上一主题 下一主题
离线robertkun
 

只看楼主 正序阅读 楼主  发表于: 2009-06-24
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —

想添加 左对齐,右对齐 ,居中 显示的功能。。
不知道有没有好的方法。。
                                              简单的生活使人快乐!
离线zhaozuqian

只看该作者 7楼 发表于: 2014-02-12
回 denghai586 的帖子
denghai586:1、设置item的宽度
    item->setTextWidth(item->boundingRect().width());
2、设置item文本
....... (2013-02-21 16:47) 

非常感谢,大神啊,爱死你了!!!
离线denghai586
只看该作者 6楼 发表于: 2013-02-21
1、设置item的宽度

    item->setTextWidth(item->boundingRect().width());

2、设置item文本

    item->setPlainText("321fdafdsafdsa\nfd");

3、设置对齐方式

    QTextBlockFormat format;
        format.setAlignment(Qt::AlignRight);
        QTextCursor cursor = item->textCursor();
        cursor.select(QTextCursor::Document);
        cursor.mergeBlockFormat(format);
        cursor.clearSelection();
    item->setTextCursor(cursor);
离线robertkun

只看该作者 5楼 发表于: 2009-07-16
多谢了,我现在用QPath 的AddPath 里绘制文字 ,只能自已算出来。

不过,使用Document 的 setAlignment() 方法还是可以的。。
                                              简单的生活使人快乐!
离线xiaodong
只看该作者 4楼 发表于: 2009-07-05
不知道你整体的大框架是什么?
如果可以的话
可以用试试如下代码
    QLabel* widget = new QLabel;
        widget->resize(w,h);
        QGraphicsProxyWidget *proxy = m_pScene->addWidget(widget,Qt::BypassGraphicsProxyWidget | Qt::Window);
        proxy->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
        proxy->setPos(x,y);

在QGraphicsScene里内嵌一个控件
离线robertkun

只看该作者 3楼 发表于: 2009-06-29
顶顶,有没有办法呢,期待中。

大侠们多多帮忙啊。。
                                              简单的生活使人快乐!
离线xjcook

只看该作者 2楼 发表于: 2009-06-24
关注

不过我建议你可以根据QGraphicsTextItem的大小来计算位置。
QGraphicsTextItem大大小会根据其内显示字符的多少而变化,如果你想让他显示在固定区域内,
并且要对齐的话,可以设置其位置。
离线robertkun

只看该作者 1楼 发表于: 2009-06-24
我继承的是 QGraphicsTextItem

这些方法在我这里用不了吧

     if (a == actionAlignLeft)
         textEdit->setAlignment(Qt::AlignLeft);
     else if (a == actionAlignCenter)
         textEdit->setAlignment(Qt::AlignHCenter);
     else if (a == actionAlignRight)
         textEdit->setAlignment(Qt::AlignRight);
     else if (a == actionAlignJustify)
         textEdit->setAlignment(Qt::AlignJustify);
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个