Abh*_*sal 4 validation qt signals qgraphicsview qgraphicstextitem
我真的很想完成与Qt GraphicsView相关的任务.任何帮助或建议将受到高度赞赏.在我的QGraphicsView应用程序中,我有一些可编辑的QGraphicsTextItems,我已添加到场景中.我需要以下功能:
任何人都可以建议我如何在我的应用程序中实现这一点?我尝试过很努力,但我找不到合适的东西.如果有任何替代或解决方法,我将很高兴知道.
谢谢!
QGraphicsTextItem不支持这种能力,因为我相信你已经发现了.所以你有几个选择:
focusOutEvent(QFocusEvent* event)和/或keyReleaseEvent(QKeyEvent* event)检测验证器何时需要运行.A QValidator可以创建为文本类的成员,并在焦点丢失和/或按下键时查询(输入键表示完成,或在每个字母上).然后在认为编辑完成或更改时为您创建自定义信号.GraphicsProxyWidget来保存QLineEdit文本输入的"真实" ,只需使用验证器进行设置,就像放置在传统的GUI表单中一样.您将需要"转发" editingFinished()或textEdited(const QString& text)发送信号QLineEdit给您QGraphicsTextItem,因此您不必提供对窗口小部件的外部访问.QTextDocument的QGraphicsTextItem,这是实际持有和格式化文本(访问它document()).但是它不支持QValidator安装,所以你必须创建一个信号槽循环,当文本被更改(发信号contentsChanged())时,它被接收QGraphicsTextItem,经过验证,然后如果验证失败则更新/清除(这将是更新QTextDocument,并再次触发此过程)或如果它通过则忽略.两者都难以实施; 第一个需要更多代码,但可以让您更好地控制文本框的视觉外观.