Qt 如何使用QGraphicsTextItem派生类获取输入的文字

在“失去焦点事件”中发射信号,告知父对象可以处理文本了
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用此方式不会出现问题

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值