绘图文本在Qt中不起作用
drawtext doesn't work in Qt
我在一个项目上工作,包括与qt创建uml工具,现在我有一个问题,在箭头上绘制文本,所以这是我的代码:
void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem * ,QWidget *)
{
if (myStartItem->collidesWithItem(myEndItem))
return;
QPen myPen = pen();
myPen.setColor(myColor);
qreal arrowSize = 20;
painter->setPen(myPen);
painter->setBrush(myColor);
QLineF centerLine(myStartItem->pos(), myEndItem->pos());
QPolygonF endPolygon = myEndItem->polygon();
QPointF p1 = endPolygon.first() + myEndItem->pos();
QPointF p2;
QPointF intersectPoint;
QLineF polyLine;
for (int i = 1; i < endPolygon.count(); ++i)
{
p2 = endPolygon.at(i) + myEndItem->pos();
polyLine = QLineF(p1, p2);
QLineF::IntersectType intersectType =
polyLine.intersect(centerLine, &intersectPoint);
if (intersectType == QLineF::BoundedIntersection)
break;
p1 = p2;
}
setLine(QLineF(intersectPoint, myStartItem->pos()));
double angle = ::acos(line().dx() / line().length());
if (line().dy() >= 0)
angle = (Pi * 2) - angle;
QPointF arrowP1 = line().p1() + QPointF(sin(angle + Pi / 3) * arrowSize,
cos(angle + Pi / 3) * arrowSize);
QPointF arrowP2 = line().p1() + QPointF(sin(angle + Pi - Pi / 3) * arrowSize,
cos(angle + Pi - Pi / 3) * arrowSize);
arrowHead.clear();
arrowHead << line().p1() << arrowP1 << arrowP2;
painter->drawLine(line());
//painter->drawPolygon(arrowHead);
if (isSelected())
{
painter->setPen(QPen(myColor, 1, Qt::DashLine));
QLineF myLine = line();
myLine.translate(0, 4.0);
painter->drawLine(myLine);
myLine.translate(0,-8.0);
painter->drawLine(myLine);
QPoint point = QPoint( 10, 20 );
painter->drawText( point, "You can draw text from a point..." );
}
}
什么也没发生我可以画箭头但是箭头上没有文字我该怎么办?我需要一些帮助
我看你做错了。
您应该使用QGraphicsPathItem
, QGraphicsPolygonItem
, QGraphicsRectItem
和QGraphicsSimpleTextItem
组成您的图形项目,而不是自己绘制所有内容。只是提供一些根项目负责管理的孩子(线文本和多边形)。这样做会更容易。
其次,你的油漆方法有问题。你应该恢复油漆器的初始状态!
最后我很确定你的问题是由boundingRect
的不正确实现引起的。在使用paint方法进行如此复杂的绘图时,这是一个很常见的错误。
相关文章:
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- Qt信号和插槽如果从QRunnable或其他线程调用,则不起作用
- 在qt QFileDialog中设置后缀在linux中不起作用,如何解决?
- 当我的阵列达到一定大小时,Qt 不起作用
- Qt creator语言 - fno-elide-constructors 不起作用
- 谷歌语音识别不起作用,因为冲突线程Qt C++
- QT QML:使用.qrc文件将SQLite数据库部署到Android不起作用
- (typedef)typename迭代器在c++、qt中不起作用
- qt.bluetooth:虚拟后端正在运行.Qt蓝牙模块在Raspbian上不起作用
- QT创建者 - selecteddate()不起作用
- QT在CentOS 7的openGL不起作用
- QT 资源不起作用
- 与 alpha 通道的图像重叠在 QT 上不起作用
- Qt QProcess有时有效,有时不起作用
- 我的代码在Qt Creator中工作,但在Cloud9中不起作用
- 我的代码在发布模式下不起作用,而在Qt的调试模式下工作
- Qt QFrame StyleSheet 在 MainWindow 中不起作用
- QT HTML 与对齐不起作用
- QT连接到按钮不起作用
- QNetworkReply https API 在 Android 设备上不起作用 - QT