在“失去焦点事件”中发射信号,告知父对象可以处理文本了
class MyText : public QGraphicsTextItem
{
Q_OBJECT
public:
explicit MyText(const QString &text, QGraphicsItem *parent = nullptr)
:QGraphicsTextItem(text,parent){}
//定义文本Item的大小,也可以不写此项
QRectF boundingRect() const{return QRectF(0,0,80,30);}
signals:
void mySignal();
protected:
void focusOutEvent(QFocusEvent *event) override{emit mySignal();}
};
//改自“40000Chips”Qt自带demo,仅选有用部分
Class Chip : public QGraphicsObject
{
Q_OBJECT
explicit Chip(const QColor &color, int x, int y, QGraphicsItem *parent = nullptr)
: QGraphicsObject(parent){
text1 = new MyText(“请输入”,this);//请输入
text1->setPos(10,20);
text1->setZValue(10);
//TextEditor样式,可以使用键盘移动光标
text1->setTextInteractionFlags(Qt::TextEditorInteraction);
connect(text1,SIGNAL(mySignal()),this,SLOT(testSlot()));
}
public slots:
void testSlot(){
//打印获取的文本
qDebug()<<text1->toPlainText();
//给文本框的文字加个尾巴
text1->setPlainText(text1->toPlainText().append(" got"));
}
private:
MyText *text1;
}
经测试上万个item用此方式不会出现问题