QT QPlainTextEdit复制粘贴功能的实现
原创
©著作权归作者所有:来自51CTO博客作者是念的原创作品,请联系作者获取转载授权,否则将追究法律责任
我最近做了一个QT mindmap的项目,用了一下QPlainTextEdit,但是出现了不能复制的情况。实际上只需要舰艇Ctrl+c和Ctrl+x按键事件就行了。我的核心代码函数为:
void keyPressEvent(QKeyEvent* ev) Q_DECL_OVERRIDE
{
update();
if (isReadOnly() && ev->key() == Qt::Key_Space) { //禁止按空格键后编辑功能
setReadOnly(true);
}
else if (!isReadOnly() && ev->key() == Qt::Key_Escape) {
setReadOnly(true);
}
else if (!isReadOnly() && ev->key() == Qt::Key_Tab) {
setReadOnly(true);
m_parent->keyPressEvent(ev);
}
else if (!isReadOnly() && ev->key() == Qt::Key_Return && (ev->modifiers() & Qt::ShiftModifier) == 0) {
setReadOnly(true);
m_parent->keyPressEvent(ev);
}else if((ev->key() == Qt::Key_C || ev->key() == Qt::Key_X) &&
ev->modifiers() == Qt::ControlModifier){ //复制粘贴
copy();
}
else if (!isReadOnly()) {
QPlainTextEdit::keyPressEvent(ev);
}
else {
m_parent->keyPressEvent(ev);
}
}
核心代码为:
else if((ev->key() == Qt::Key_C || ev->key() == Qt::Key_X) &&
ev->modifiers() == Qt::ControlModifier){
copy();
}
然后再复制QPlainTextEdit上的内容就能复制成功了。
参考文献
[1].qtQPlainTextEdit复制内容粘贴到excel中的问题. http://blog.sina.com.cn/s/blog_6b2dd2620102yvyp.html