- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我想在一些 QGraphicsScene 中显示一个简单的家谱树。那里的每个人都有确切的名字和姓氏(没有显示其他任何内容)。
我想为那里的每个人建立一个 QGraphicsItemGroup由两个组成QGraphicsSimpleTextItem -s 垂直对齐并居中。一个用于人的名字,一个用于他们的姓氏。每个都有自己的字体和颜色。我不想使用沉重的 QGraphicsTextItem因为它太重了(一个只有名字和姓氏的人名不值得一个完整的 QTextDocument )。
所以我在想
struct Person {
QGraphicsItemGroup _group;
QGraphicsLinearLayout _lay;
QGraphicsSimpleTextItem _firstname;
QGraphicsSimpleTextItem _lastname;
public:
Person(QGraphicsScene*scene,
const std::string& first, const std::string& last)
: group(), _lay(Qt::Vertical),
_firstname(first.c_str()), _lastname(last.c_str()) {
_lay.addItem(&_firstname);
_lay.setSpacing(0, 5);
_lay.addItem(&_lastname);
_group.addToGroup(&_firstname);
_group.addToGroup(&_lastname);
scene->addItem(&_group);
};
};
但这不起作用,因为 _lay.addItem(&_firstname);
无法编译,因为 QGraphicsSimpleTextItem
不是 QGraphicsLayoutItem
有什么提示吗?还是我的整个方法都错了?
我是否应该定义一个同时继承自 QGraphicsSimpleTextItem
和 QGraphicsLayoutItem
的类?
注意:实际代码(GPlv3 许可)在我的 basixmo 中github 上的项目,文件 guiqt.cc , 提交 99fd6d7c1ff261 .它不是一个谱系项目,而是一个抽象的语法树编辑器,就像一个坚持不懈的解释者的东西。相关类是BxoCommentedObjrefShow
;我显示的不是名字,而是像 _7rH2hUnmW63o78UGC
这样的 ID,而不是姓氏,我显示的是像 body of test1_ptrb_get
这样的简短评论。 basixmo项目本身是对 melt-monitor-2015 的暂定重写在 C++11 和 Qt5 中
最佳答案
看来你认为 QGraphicsLinearLayout 的目的不是它的真正目的:
来自 Official QT 5.7 documentation
The QGraphicsLinearLayout class provides a horizontal or vertical layout for managing widgets in Graphics View
它不应该在你的场景中布置普通的绘图项目,而是 QWidgets。不幸的是,有关它的文档和示例似乎不起作用。
如何实现垂直布局
幸运的是,QGraphicsItem 不难扩展,因此您可以在几行中实现您的文本对:
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsSimpleTextItem>
#include <QGraphicsItemGroup>
class QGraphicsPerson: public QGraphicsItemGroup
{
public:
QGraphicsPerson( const QString& firstStr,
const QString& secondStr,
QGraphicsItem *parent=nullptr)
{
first.setText(firstStr);
second.setText(secondStr);
addToGroup(&first);
addToGroup(&second);
second.setPos(first.pos().x(), first.pos().y()+first.boundingRect().height());
}
protected:
QGraphicsSimpleTextItem first, second;
};
int main(int n, char **args)
{
QApplication app(n, args);
QGraphicsScene scene;
QGraphicsView window(&scene);
QGraphicsPerson person( "Adrian", "Maire");
scene.addItem(&person);
person.setPos(30,30);
QGraphicsPerson person2( "Another", "Name");
scene.addItem(&person2);
window.show();
return app.exec();
}
注意:场景空间在两个方向上都无限延伸,因此空间管理非常简单(没有最小/最大尺寸、拉伸(stretch)等)
关于linux - 用两个 QGraphicsSimpleTextItem-s 制作一个 QGraphicsItemGroup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40552360/
我将文本设置到我的 QGraphicsSimpleTextItem 中,它位于 QGraphicsItem 中,似乎文本抗锯齿不起作用或效果很差。我试着设置 font.setStyleStrategy
我想创建一个 QGraphicsRectItem 并用 QGraphicsSimpleTextItem 显示它的名称。我希望文本的大小不受缩放的影响。我还希望文本的位置以 QGraphicsRectI
我已经在我的 QGraphicsScene 中添加了一个 QGraphicsSimpleTextItem,但是只有一个简单的文本在当前背景下是不可读的。因此我想设置 QGraphicsSimpleTe
我已经将 QGraphicsLineItem 继承到一个名为 waypointline 的新类中。当我构建每个点线时,我想在线的中间放置一些文本: // Draw line setLine(local
假设我想在一些 QGraphicsScene 中显示一个简单的家谱树。那里的每个人都有确切的名字和姓氏(没有显示其他任何内容)。 我想为那里的每个人建立一个 QGraphicsItemGroup由两个
我正在使用 qrect 和简单文本项制作图像注释系统。 我正在尝试将 QGraphicssimpletext 项目中的字符串值存储到 JSON 文件中以保存和加载注释框。矩形工作正常,但我无法理解如何
我想向图形场景添加一个简单的文本项(一个字),因此使用 QGraphicsSimpleTextItem。文本项的场景坐标定义了文本的左上角。 是否可以让文本中心围绕坐标对齐? 最佳答案 为此使用 se
我是一名优秀的程序员,十分优秀!