关于QGraphicsItem及其相关的类的使用。试了不少次。终于达到了我想要的效果。可以作为Qt使用者学习的例子。
第一个是MyItem1类
#ifndef MYITEM1_H
#define MYITEM1_H
#include <QCursor>
#include <QGraphicsItem>
#include <QGraphicsTextItem>
#include <QGraphicsRectItem>
#include <QGraphicsTextItem>
#include <QGraphicsSceneEvent>
class MyItem1 : public QObject, public QGraphicsItem
{
Q_OBJECT
public:
explicit MyItem1(QGraphicsItem *parent = 0);
virtual ~MyItem1();
QRectF boundingRect(void) const;
void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget);
private:
QGraphicsTextItem *text_item;
QGraphicsRectItem *rect_item;
bool text_interaction; //可编辑状态
qreal text_width; //文本的宽度
qreal adjust; //距离调整
QRectF text_rect; //文本的边框
void reset_text_rect(void); //重新设置文本边框的函数
protected:
void keyPressEvent(QKeyEvent *event);
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
void hove