QGraphicsLineItem 类
QGraphicsLineItem类提供了一个可以添加到QGraphicsScene的线段项。
Header: | #include < QGraphicsLineItem> |
---|---|
qmake: | QT += widgets |
Inherits: | QGraphicsItem |
Inherited By: | |
Since: | Qt 4.2 |
详述
要设置项目的线段,请将QLineF传递给QGraphicsLineItem的构造函数,或调用setLine()函数。 line()函数返回当前线段。 默认情况下,该线段为黑色,宽度为0,但是您可以通过调用setPen()来更改它。
QGraphicsLineItem使用线条和笔的宽度来提供boundingRect(),shape()和contains()的合理实现。 paint()函数使用项的关联笔来绘制线条。
参见QGraphicsPathItem, qgraphicsrectem, QGraphicsEllipseItem, QGraphicsTextItem, QGraphicsPolygonItem, QGraphicsPixmapItem,和图形视图框架。
公共类型
enum anonymous
由virtual type()函数返回的值。
Constant | Value | Description |
---|---|---|
Type | 6 | 图形线段项 |
公共函数
构造析构
- QGraphicsLineItem(qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem *parent = nullptr)
- QGraphicsLineItem(const QLineF &line, QGraphicsItem *parent = nullptr)
- QGraphicsLineItem(QGraphicsItem *parent = nullptr)
- virtual ~QGraphicsLineItem()
线段
- QLineF line() const
- void setLine(const QLineF &line)
- void setLine(qreal x1, qreal y1, qreal x2, qreal y2)
画笔
- QPen pen() const
- void setPen(const QPen &pen)
重写的公共函数
- virtual QRectF boundingRect() const override
- virtual bool contains(const QPointF &point) const override
- virtual bool isObscuredBy(const QGraphicsItem *item) const override
- virtual QPainterPath opaqueArea() const override
- virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override
- virtual QPainterPath shape() const override
- virtual int type() const override
演示代码
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setApplicationName ("图形框架");
QGraphicsView view;
QGraphicsScene scene(-100,-100,200,200);
scene.setBackgroundBrush (QBrush(qRgb (173,241,174)));
QPen pen(qRgb (140,159,141));
for (int i = -80; i < 100; i+=20) {
scene.addLine (-100,i,100,i,pen);
scene.addLine (i,-100,i,100,pen);
}
scene.addLine (-100,0,100,0);
scene.addLine (90,-10,100,-1);
scene.addLine (90, 10,100, 1);
scene.addLine (0,-100,0,100);
scene.addLine (-1, 100,-10,90);
scene.addLine (1 , 100, 10,90);
QGraphicsLineItem li;
li.setLine (-40,-30,65,40);
pen.setColor (Qt::black);
pen.setStyle (Qt::DashDotDotLine);
pen.setWidthF (2);
li.setPen (pen);
li.setFlag (QGraphicsItem::ItemIsMovable);
scene.addItem (&li);
view.setScene (&scene);
view.setRenderHint (QPainter::Antialiasing);
view.setWindowFlag (Qt::WindowMinMaxButtonsHint,false);
view.show ();
return a.exec();
}