我正在为基于 QtWebKit 的浏览器实现虚拟键盘。我很难理解 QtWebKit 如何在实际页面中绘制控件。最初我以为它们是 QLineEdit 实例,但它们不是。深入实施,Qt 和 WebKit 之间的粘合代码似乎使用 QStyle 和 QPainter 绘制文本字段。不幸的是,我对 Qt 很陌生,所以我不明白在事件循环中,这些事件的鼠标按下是在哪里被解释的。我在调用堆栈深处找到了 Editor::canEdit(),现在我可以在用户单击页面中的文本字段时调出虚拟键盘。然后虚拟键盘需要一个指向 QWidget 实例的指针,但 Edito::canEdit() 不携带该信息,我不能 找不到像 QWidget 这样的实例暴露的任何地方。我真的很难过,任何建议都会受到欢迎。
谢谢!