Override default copy/paste from QTextEdit
-
wrote on 5 Dec 2018, 16:01 last edited by zespy 12 May 2018, 16:09
Hello,
I have a main window that has a
QTextEdit
and 3QAction
(copy, cut and paste), mapped on the default shortcuts (respectively ctrl+c, ctrl+x and ctrl+v). The goal of the actions is to copy/paste the contents of theQTextEdit
, but with extra-work (the contents is copied astext/plain
andapplication/json
MIME types).However,
QTextEdit
already implements its own copy/paste functions, with the same shortcuts. When I hit ctrl+c, it is always theQTextEdit
copy function that is used, instead of mine (so there is noapplication/json
in the clipboard...).How can I change this behavior, and use my functions instead? I saw that there is a QEvent::ShortcutOverride event, but I don't know how to use it... can I use it in an QObject::eventFilter() function? Or should I inherit from QTextEdit and override its QWidget::keyPressEvent() method?
The best for me would be to totally disconnect the default copy/paste from the
QTextEdit
and use only mine. I can inherit and try to mess up with the class (but how?), but the best solution would be that it works even with polymorphism (but the slots are not virtual).Thanks for your help :)
edit: QTextEdit::createMimeDataFromSelection() is not an option for me as I also have a
QLineEdit
and I'd like the same behavior with it (to not use its default copy/paste functions). -
wrote on 5 Dec 2018, 16:33 last edited by
You can use
QTextEdit::actions
to retrieve the list of actions already with the widget, then you can useQTextEdit::removeAction
/QTextEdit::addAction
to remove the old one and add your custom ones -
wrote on 5 Dec 2018, 19:02 last edited by
Bien vu !
I missed this function during my search... I'll try tomorrow and update this thread accordingly.
Thanks :)
-
wrote on 6 Dec 2018, 09:15 last edited by
Unfortunately, it doesn't seems to work...
actions()
returns me an empty list.I think I'll go for
QTextEdit::createMimeDataFromSelection()
because otherwise I won't be able to deal with drag & drop (I didn't think about it :/ )Thanks anyway!
2/4