write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
讨论新闻组及文件
估计这种小的知识会有几篇文章,除了全局快捷键部分外,其他的都比较简单,都是我实现
“onekeycodehighlighter"中碰到的一些小问题,这里顺面整理一下。事实上,稍微懂一点的人,去看看one key code highlighter的源代码都能明白了。这里相当于将其详细的剖析一下。。。。。。。另外,实现上用Python+PyQt,事实上,主要的部分是对Qt的一些类的使用,所以其实看懂了C++的Qt中使用上是一样的。啥?你看不懂Python?好的,这就是我为什么靠C++吃饭,却学习JAVA,JavaScript,Lua,Python,Bash的一个原因,不然你看不懂别人在写啥-_-!(当然,我基本上也就学到能看懂)
对于pyQt完全不懂的,这里也不用看了,《
pyqt的学习(1) 入门》,《
pyqt(2) 对话框...》可以看看,但是写的有点乱,因为那时候我懂得也少(不代表现在就懂的多了)
概述
系统剪贴板的操作在Qt中有原生的支持,这点很强大,操作起来比Windows本身附带的要简单的多,更重要的是,这是跨平台的。
Windows中的剪贴板其实很简单,只有一种,就是你选择然后CTRL-C的那一个。在Vim中用寄存器"+"存储,(不懂就算了)。Linux中剪贴板有两种,一种是鼠标选中后立刻就生效的,在Vim中用寄存器"+"存储,称作select剪贴板,另外一种就是类似Windows下的那种剪贴板,vim中用寄存器"*"存储。
剪贴板作为应用程序中较为通用的一种共享数据的方式,应用较为广泛,就我所知,这好像是唯一一种用户可以很方便操作的应用程序共享数据的途径,其他的如Socket等,编程的时候是很容易实现,用户要操作就难了。
操作
简单的剪贴板操作,很简单,Qt中用QClipboard类来表示
在Qt中用
clipboard = QtGui.QApplication.clipboard()
获取到剪贴版的对象,然后用text表示获取到文本数据,(类似CTRL-P),用setText来设置文本数据。(类似CTRL-C)
更深入的操作
对于普通的文本操作,这两个函数就足够了。以前我也是这样做的。但是,我发现一个现象,那就是复制网页上的数据后,在Google Document上paste的时候,是直接可以复原原来的网页内容的(虽然常常有些偏差),但是我转换后的HTML源码是用setText设置到剪贴板中的话,paste出来的就是源码,说明肯定里面还有蹊跷,要是我的转换工具,直接粘贴就可以在Google Document中出现语法高亮过的文字多好啊,于是我查看了一下QClipboard类,及MSDN。果然,在剪贴板中保存的不仅仅是文字,还可以是一些有格式的内容,在windows中可以保存OLE的东西。。。。Qt中将其统一划分为MimeData。
看看QMimedata这个类就会很惊喜,包括了HTML,Image等很多的东西,当然我要的就是HTML。
于是乎,我通过
mimeData = QtCore.QMimeData()
mimeData.setHtml(clipboard.text())
clipboard.setMimeData(mimeData)
来设置一个转换过的HTML源码,此时就能直接在Google Document上通过粘贴来得到高亮过的代码了:)
但是,在语法文本源代码的地方此时的粘贴就无效了,因为已经没有文本了,经过试验,Qt中不同的数据时相互不影响的,于是再改了一下:
def setClipboardMimeToHTML():
clipboard = QtGui.QApplication.clipboard()
mimeData = QtCore.QMimeData()
mimeData.setText(clipboard.text())
mimeData.setHtml(clipboard.text())
clipboard.setMimeData(mimeData)
哈哈,能够粘贴HTML的地方,显示的就是HTML,只能显示文本的地方,粘贴的即是HTML的源码。好不强大,这也就是最后,你们在
“onekeycodehighlighter" 中实际使用的效果。
总之,我是对自己做的这个工具很满意了:)
完整源代码获取说明
由于篇幅限制,本文一般仅贴出代码的主要关心的部分,代码带工程(或者makefile)完整版(如果有的话)都能用Mercurial在Google Code中下载。文章以博文发表的日期分目录存放,请直接使用Mercurial克隆下库:
https://onekeycodehighlighter.googlecode.com/hg/
Mercurial使用方法见《分布式的,新一代版本控制系统Mercurial的介绍及简要入门》
要是仅仅想浏览全部代码也可以直接到google code上去看,在下面的地址:
http://code.google.com/p/onekeycodehighlighter/source/browse/
原创文章作者保留版权 转载请注明原作者 并给出链接
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
分享到:
相关推荐
Qt/PyQt无法连接数据库问题解决所需的两个dll文件
PyQt快速开发与实战电子书并非源码。交流学习使用。资源来自于网络,如有侵权立即删除。
资源分类:Python库 所属语言:Python 资源全名:QT-PyQt-PySide-Custom-Widgets-0.1.8.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Opencv/PyQt-鼠标控制界面(二)
Opencv/PyQt——鼠标控制界面(一)
Qt Designer是PyQt程序UI界面的实现工具,Qt Designer工具使用简单,可以通过拖拽和点击完成复杂界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用。本文主要通过用户登录需求描述Qt Designer工具...
主要为大家详细介绍了pyqt5利用pyqtDesigner实现登录界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
以上这篇在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:PyQt5 实现字体大小自适应分辨率的方法pyqt5...
可以在所有主流的操作系统上运行( Unix 、 Windows 、 Mac ) 。 PyQt 有两种许可,开发者可以在 GPL 和商业许可证之间做出选择。之前, PyQt 的 GPL 许可证只在 Unix 系统上可用,但在 PyQt4 之后,其 GPL 许可证...
本篇文章主要介绍了python3+PyQt5实现使用剪贴板做复制与粘帖示例,具有一定的参考价值,有兴趣的可以了解一下。
PyQt是Python语言和Qt库的成功融合。 偶然找到的这个版本, ubuntu16.04安装成功,对应Qt 5.9.0 sip 4.19.3 其他版本不保证
PyQt5系列教程(二)利用QtDesigner设计UI界面源码包,博文地址http://blog.csdn.net/djstavaV/article/details/50282527
pythonqt5教程从零开始_pyQt5QtDesigner简易⼊门教程 python3.6 & pyQt5 & QtDesigner 简易⼊门教程 1. python 官⽹下载安装python3.6并配置好环境; 2.cmd下 运⾏: pip install PyQt5 安装PyQt库; 3.cmd下运⾏: ...
适合初学者或多年开发者参考
主要介绍了PyQt中使用QtSql连接MySql数据库的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
oracle-jmesdk-8-0-rr-nb-plugins.zip
pytest-qt, 用于 Qt ( PyQt4,PyQt5和 PySide ) 应用程序测试的pytest插件 pytest-qtpytest-qt是一个支持程序员为 PySide,PySide2和 PyQt的应用程序编写测试的 pytest插件插件。主要用途是使用 qtbot fixture,负责...
本书共分四个部分:第一部分主要讲述Python基础知识,第二部分通过三个例子给出PyQt GUI应用程序的初步印象,第三部分深入讲述窗口部件布局、事件处理、窗口部件子类化、Qt图形架构和Qt的模型/视图等内容,第四部分...
python Qt GUI快速编程 PYQT编程指南 python Qt GUI快速编程 PYQT编程指南