Comment puis je faire pour ajouter des "points d'enregistrement" au stack de sauvegardes des undo/redo d'un QTextEdit?
Comment puis je faire pour ajouter des "points d'enregistrement" au stack de sauvegardes des undo/redo d'un QTextEdit?
Si tu veux juste agir au moment d'un UnDo ou Redo, tu peux faire comme suit (après à toi de gérer les enregistrements) :
Il me semble que le CTRL+Z et le CTRL+Y sont utilisés sous Windows et Ubuntu. Pour Mac, je ne sais pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 # -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui class textPlus(QtGui.QTextEdit): def keyPressEvent(self, event): if event.key() == QtCore.Qt.Key_Z: if event.modifiers() and QtCore.Qt.ControlModifier: print 'Un UnDo' if event.key() == QtCore.Qt.Key_Y: if event.modifiers() and QtCore.Qt.ControlModifier: print 'Un ReDo' QtGui.QTextEdit.keyPressEvent(self, event) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(395, 292) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.textEdit = textPlus() self.textEdit.setObjectName("textEdit") self.verticalLayout.addWidget(self.textEdit) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 395, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
Salut, en fait, ce que je souhaite faire, c'est rajourter des "points de sauvegarde". Je me suis rendu compte que si je colle deux fois de suite la même chose, si je fais un "undo", il revient avant le 1er collage. Je voudrais revenir "un collage en arrière "et pas deux comme c'est le cas. En d'autre termes, comment fait on un enregistrement de l'état du QtextEdit pour y revenir en faisant "undo"?
Hum au temps pour moi. Là comme ça je ne sais pas comment faire. Peut-être peux-tu essayer d'enregistrer à intervalle de temps régulier.
Je garde ta question sous le coude quand j'aurais cinq minutes ou une heure...
Juste avant d'aller skier, je te propose de regarder ici http://www.riverbankcomputing.co.uk/....html#revision sans garantie que ce soit la bonne piste.
Si tu y arrives, je serais intéressé par ta méthode.
sauf erreur de ma part, ce n'est malheureusement pas la bonne piste...
Tout ce que j'ai pu glaner comme info est à la fin de la description mais je n'ai trouvé nulle part comment faire un "enregistrement"!
http://www.riverbankcomputing.co.uk/...t.html#details
je continue à chercher...
[EDIT]
peut etre ici la bonne piste, mais le lien est mort :
cliquer sur Qt Undo Framework de la page :
http://www.riverbankcomputing.co.uk/...#undoAvailable
Je pense que c'est du coté de la classe Qundo....
ça a l'air intéressant mais je ne sais pas comment l'utiliser...
QUndoStack.push()
Google l'omniscient m'a donné pour "pyqt+subclass+undo" le lien suivant qui a l'air en rapport avec ce que tu penses être une bonne solution : http://www.informit.com/articles/art...87104&seqNum=3 . Cela peut peut-être donner des idées.
oui en effet, cela semble correspondre, cependant, je me dis que je devrais pouvoir ajouter un point de sauvegarde sans réimplémenter toute la partie undo/redo du QTextEdit puisque par défaut on peut faire un undo.
Mais pour cela il faudrait que je sache comment appeler les commandes (trouvée dans la classe QUndo) du framewok undo/redo de la classe QtextEdit.
J'ai essayé un ".__dict__" pensant avoir les attributs de la classe mais c'est vide...
Une autre piste pour les undo/redo : http://qt-quarterly.developpez.com/q...edo-avec-vues/ .
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager