Results 1 to 16 of 16

Thread: QtableWidget UNDO

  1. #1
    Join Date
    Aug 2011
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default QtableWidget UNDO

    Is there any sign like editingFinished () to a cell QTableWidget?

    I am doing a program, when editing a cell value of a QTableWidget, if a valid value changes its value is changed, otherwise the value remains.

    PS: Sorry for my english

  2. #2
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QtableWidget UNDO

    If you want to do it this way then provide a custom delegate for your widget and in the createEditor() method connect to appropriate signals of the editor. But in general it'd be much easier to either reimplement the setModelData() method in the delegate or reimplement QTableWidgetItem::setData(). The cleanest solution would be to use model-based approach and implement QAbstractItemModel::setData() properly.
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  3. #3
    Join Date
    Aug 2011
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QtableWidget UNDO

    You can make a mini example for i see?

  4. #4
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QtableWidget UNDO

    An example of what?
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  5. #5
    Join Date
    Aug 2011
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QtableWidget UNDO

    an example of how i can make that. Because i dont understand how

  6. #6
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QtableWidget UNDO

    What is exactly that you don't know how to do?
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  7. #7
    Join Date
    Aug 2011
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QtableWidget UNDO

    Qt Code:
    1. #ifndef MUDACELULA_H
    2. #define MUDACELULA_H
    3. #include <QAbstractItemModel>
    4. #include <QMessageBox>
    5. class mudaCelula: public QAbstractItemModel
    6. {
    7.  
    8. Q_OBJECT
    9.  
    10. public:
    11. mudaCelula(QObject *parent=0);
    12. virtual bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) ;
    13. short int isUnique(QString pesq);
    14. };
    15.  
    16. #endif // MUDACELULA_H
    To copy to clipboard, switch view to plain text mode 



    Qt Code:
    1. #include "mudacelula.h"
    2. #include<QMessageBox>
    3. #include <QSqlDatabase>
    4. #include <QSqlQuery>
    5. #include <QSqlRecord>
    6. mudaCelula::mudaCelula(QObject *parent):QAbstractItemModel(parent)
    7. {
    8. }
    9.  
    10. bool mudaCelula::setData ( const QModelIndex & index, const QVariant & value, int role )
    11. {
    12. if(!isUnique("SELECT COUNT(*) FROM M_CASEIRA WHERE UPPER(DESIG_CASEIRA)=UPPER(\""+value.toString()+"\");"))
    13. a.setText("A designação caseira introduzida já existe.");
    14. a.exec();
    15. return false;
    16. }
    17. else{
    18. emit dataChanged(index,index);
    19. return true;
    20. }
    21. }
    22.  
    23.  
    24. short int mudaCelula::isUnique(QString pesq)
    25. {
    26.  
    27. if (QSqlDatabase::database().isOpen())
    28. {
    29. QSqlQuery resPesq;
    30.  
    31. if( resPesq.exec(pesq))
    32. {
    33. bool consegui=resPesq.next();
    34. if( consegui && (!resPesq.record().value(0).toInt()))
    35. return 1;
    36. }
    37.  
    38. }
    39.  
    40. return 0;
    41.  
    42. }
    To copy to clipboard, switch view to plain text mode 

    This is that class you tell me to re-implemente to put in tablewidget.setmodel();

    You can see wath is wrong?


    mudacelula.h:6: because the following virtual functions are pure within 'mudaCelula':

    BDNUTRI-build Desktop\..\..\..\QtSDK\Desktop\Qt\4.7.3\mingw\incl ude\QtCore\qabstractitemmodel.h:171: virtual QModelIndex QAbstractItemModel::index(int, int, const QModelIndex&) const

    BDNUTRI-build-desktop\..\..\..\QtSDK\Desktop\Qt\4.7.3\mingw\incl ude\QtCore\qabstractitemmodel.h:182: virtual QVariant QAbstractItemModel::data(const QModelIndex&, int) const

    BDNUTRI-build-desktop\..\..\..\QtSDK\Desktop\Qt\4.7.3\mingw\incl ude\QtCore\qabstractitemmodel.h:179: virtual int QAbstractItemModel::columnCount(const QModelIndex&) const

  8. #8
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QtableWidget UNDO

    Are you sure you know what you are doing? If you subclass QAbstractItemModel, you need to implement more methods than just setData(). Besides, your implementation doesn't make any sense.
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  9. #9
    Join Date
    Aug 2011
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QtableWidget UNDO

    Qt Code:
    1. #include "mudacelula.h"
    2. #include<QMessageBox>
    3. #include <QSqlDatabase>
    4. #include <QSqlQuery>
    5. #include <QSqlRecord>
    6. mudaCelula::mudaCelula(QObject *parent):QAbstractTableModel(parent)
    7. {
    8. }
    9.  
    10. int mudaCelula::rowCount(const QModelIndex &parent) const
    11. {
    12. int conta=contador("SELECT COUNT(*) FROM GRUPO;");
    13. return conta;
    14. }
    15.  
    16. int mudaCelula::columnCount(const QModelIndex &parent) const
    17. {
    18. return 3;
    19. }
    20.  
    21. QVariant mudaCelula::data(const QModelIndex &index, int role) const
    22. {
    23. if (!index.isValid())
    24. return QVariant();
    25.  
    26. if (role == Qt::TextAlignmentRole) {
    27. return int(Qt::AlignRight | Qt::AlignVCenter);
    28. }
    29. //else if (role == Qt::DisplayRole) {
    30.  
    31. return QVariant();
    32. }
    33. bool mudaCelula::setData ( const QModelIndex & index, const QVariant & value, int role )
    34. {QMessageBox msgErro2;
    35.  
    36. if (index.isValid() && role == Qt::EditRole) {
    37.  
    38. QMessageBox msgErro;
    39. int conta=contador("SELECT COUNT(*) FROM GRUPO WHERE UPPER(DESIG_GRUPO)=UPPER(\""+value.toString()+"\");");
    40. msgErro2.setText(QString::number(conta)+"\n"+"SELECT COUNT(*) FROM GRUPO WHERE UPPER(DESIG_GRUPO)=UPPER(\""+value.toString()+"\");");
    41. msgErro2.exec();
    42. switch(conta)
    43. {
    44. case -1:
    45. msgErro.setText("Erro na conexão com a Base de Dados.\nNão foi possÃ*vel introduzir a Medida SI.");
    46. msgErro.exec();
    47. break;
    48.  
    49. case 0:emit
    50.  
    51. emit dataChanged(index,index);
    52. return true;
    53. break;
    54.  
    55. default:
    56. msgErro.setText("A designação caseira introduzida já existe.");
    57. msgErro.exec();
    58. break;
    59. }
    60.  
    61. return (conta==0);
    62. }
    63. return false;
    64. }
    65.  
    66.  
    67.  
    68.  
    69. int mudaCelula::contador(QString pesq)
    70. {
    71.  
    72. if (QSqlDatabase::database().isOpen())
    73. {
    74. QSqlQuery resPesq;
    75. if( resPesq.exec(pesq))
    76. {
    77. if(resPesq.next())
    78. return (resPesq.record().value(0).toInt());
    79. }
    80.  
    81. }
    82.  
    83. return -1;
    84.  
    85. }
    86.  
    87.  
    88.  
    89. Qt::ItemFlags mudaCelula::flags(const QModelIndex &index) const
    90. {
    91. Qt::ItemFlags flags ;
    92. if (index.column()>0)
    93. flags =QAbstractTableModel::flags(index)| Qt::ItemIsEditable | Qt::ItemIsEnabled;
    94. else
    95. flags = Qt::ItemIsUserCheckable | Qt::ItemIsEnabled;
    96. return flags;
    97. }
    98.  
    99.  
    100.  
    101. QVariant mudaCelula::headerData(int section, Qt::Orientation orientation, int role) const
    102. {
    103. if (role != Qt::DisplayRole)
    104. return QVariant();
    105.  
    106. if (orientation == Qt::Horizontal) {
    107. switch (section) {
    108. case 0:
    109. return tr("");
    110.  
    111. case 1:
    112. return tr("Grupo");
    113.  
    114. case 2:
    115. return tr("Informação");
    116. default:
    117. return QVariant();
    118. }
    119. }
    120. return QVariant();
    121. }
    To copy to clipboard, switch view to plain text mode 



    After more google search this and read qt documentation this is my new code. Why my implementation doesnt make sense?
    I have 3 question

    1. My problem now is with rowcont, if i put a number everything is work..but i want dinaymic something like that:

    Qt Code:
    1. int mudaCelula::rowCount(const QModelIndex &parent) const
    2. {
    3. int conta=contador("SELECT COUNT(*) FROM GRUPO;");
    4. return conta;
    5. }
    To copy to clipboard, switch view to plain text mode 

    2. How after emit datachanged i can update qtableview? i search but i dont find. I have this:

    Qt Code:
    1. connect(oi,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this, SLOT(dataChanged(QModelIndex,QModelIndex)));
    2.  
    3. void Ingrediente::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
    4. {
    5. //ui->tableView->dataChanged(topLeft, bottomRight);
    6. ui->tableView->viewport()->update();
    7. }
    To copy to clipboard, switch view to plain text mode 



    3.

    in qtablewidget i put this to show checkbox in the first collum:


    QTableWidgetItem *qItem = new QTableWidgetItem();
    qItem->setFlags(Qt::ItemIsEnabled|Qt::ItemIsUserCheckabl e);


    now in my subclass mudaCelula i put:
    Qt Code:
    1. Qt::ItemFlags mudaCelula::flags(const QModelIndex &index) const
    2. {
    3. Qt::ItemFlags flags ;
    4. if (index.column()>0)
    5. flags =QAbstractTableModel::flags(index)| Qt::ItemIsEditable | Qt::ItemIsEnabled;
    6. else
    7. flags = Qt::ItemIsUserCheckable | Qt::ItemIsEnabled;
    8. return flags;
    9. }
    To copy to clipboard, switch view to plain text mode 
    What i doing wrong? Because checbox doesnt show.


    If tell how to resolve or a link to learn more..i thk you.

    PS:Sorry for my english

  10. #10
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QtableWidget UNDO

    Your implementation doesn't make any sense because your model has no data. I don't even understand how you belive this might work. I suggest you take a look at examples of existing models in the docs if you want to make your own. The other thing that doesn't make any sense is that you are using QTableWidget which doesn't even use a model. There are a couple of other nonsense things I could point out here but they are not relevant until you understand what you are doing.
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  11. #11
    Join Date
    Aug 2011
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QtableWidget UNDO

    Wysota, I think because of my English, you did not understand very well what I wrote or I did not express myself properly.

    1. I know the QTablewidget does not accept Model. What I was saying is that before moving to the QTableView, had been playing with QTableWidget until I find the restriction of not being able to control when the data are edited in the cell. But until then, i had managed to implement a checkbox in QTableWidget, but when I moved to QTableView could not do the same. The checkbox does not appear

    2. Regarding the models, I had seen the examples and I know that everyone takes a vector, hash, or list or other data . Just what I was wondering if you could do without it, using only the search sql to give the number of lines.´

  12. #12
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QtableWidget UNDO

    Quote Originally Posted by afro_cv View Post
    Wysota, I think because of my English, you did not understand very well what I wrote or I did not express myself properly.
    I'm reading your code, I can see what it does and what it does not do.

    2. Regarding the models, I had seen the examples and I know that everyone takes a vector, hash, or list or other data . Just what I was wondering if you could do without it, using only the search sql to give the number of lines.´
    You can do without it but your implementation doesn't try to. Your data() implementation doesn't return any data and your setData() implementation doesn't modify any data. And if you intend to make an SQL query every time the model is queried for anything, it will be very slow. When a view is initialized, the model is queried several times per row. Multiply that by the number of rows and think whether this is acceptable.
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  13. #13
    Join Date
    Aug 2011
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QtableWidget UNDO

    Header File
    Qt Code:
    1. #ifndef GRUPOMODEL_H
    2. #define GRUPOMODEL_H
    3. #include <QAbstractTableModel>
    4. #include <QList>
    5. #include <grupoclass.h>
    6. #include <QMessageBox>
    7. #include <QWidget>
    8. class GrupoModel : public QAbstractTableModel
    9. {
    10.  
    11. public:
    12. GrupoModel(QObject *parent = 0);
    13. void setGrupoList(const QList<GrupoClass> &list);
    14. int rowCount(const QModelIndex &parent) const;
    15. int columnCount(const QModelIndex &parent) const;
    16. QVariant data(const QModelIndex &index, int role) const;
    17. Qt::ItemFlags flags(const QModelIndex &index) const;
    18. QVariant headerData(int section, Qt::Orientation orientation, int role) const;
    19. bool setData(const QModelIndex &index, const QVariant &value,int role);
    20. void setParenti(QWidget *parenti);
    21.  
    22. private:
    23. QString grupoAt(int row, int col) const;
    24. bool checkAt(int row) const;
    25. QList<GrupoClass> grupoList;
    26. QString temp;
    27. QWidget *parentias;
    28. };
    29.  
    30. #endif // GRUPOMODEL_H
    To copy to clipboard, switch view to plain text mode 


    CPP FILE
    Qt Code:
    1. #include "grupomodel.h"
    2. #include <QMessageBox>
    3. #include <QAbstractTableModel>
    4. GrupoModel::GrupoModel(QObject *parent) : QAbstractTableModel(parent)
    5. {
    6. }
    7.  
    8. int GrupoModel::rowCount(const QModelIndex &parent) const
    9. {
    10. return grupoList.count();
    11. }
    12.  
    13. int GrupoModel::columnCount(const QModelIndex &parent) const
    14. {
    15. return 3;
    16. }
    17.  
    18. QString GrupoModel::grupoAt(int row, int col)const
    19. {
    20. QString retorno;
    21. switch(col)
    22. {
    23. case 0: retorno="";break;
    24. case 1: retorno=grupoList[row].Designacao();break;
    25. case 2: retorno=grupoList[row].Informacao();break;
    26. }
    27.  
    28. return retorno;
    29. }
    30.  
    31. void GrupoModel::setGrupoList(const QList<GrupoClass> &list)
    32. {
    33. grupoList=list;
    34. reset();
    35. }
    36.  
    37. QVariant GrupoModel::data(const QModelIndex &index, int role) const
    38. {
    39. if (!index.isValid())
    40. return QVariant();
    41.  
    42. if (role == Qt::TextAlignmentRole) {
    43. return int(Qt::AlignLeft | Qt::AlignVCenter);
    44. }
    45. else if (role == Qt::DisplayRole) {
    46.  
    47. return grupoAt(index.row(),index.column());
    48.  
    49. }
    50. else if (role == Qt::EditRole)
    51. {
    52. return grupoAt(index.row(),index.column());
    53. }
    54. else if ((!index.column()) &&(role==Qt::CheckStateRole))
    55. {
    56. if (grupoList[index.row()].Check())
    57. return Qt::Checked;
    58. else
    59. return Qt::Unchecked;
    60. }
    61. return QVariant();
    62.  
    63. }
    64.  
    65. Qt::ItemFlags GrupoModel::flags(const QModelIndex &index) const
    66. {
    67. Qt::ItemFlags flags ;
    68. if (index.column()>0)
    69. flags =QAbstractTableModel::flags(index)| Qt::ItemIsEditable | Qt::ItemIsEnabled;
    70. else
    71. flags = Qt::ItemIsUserCheckable | Qt::ItemIsEnabled;
    72. return flags;
    73. }
    74.  
    75.  
    76.  
    77. QVariant GrupoModel::headerData(int section, Qt::Orientation orientation, int role) const
    78. {
    79.  
    80.  
    81. if (role != Qt::DisplayRole)
    82. return QVariant();
    83.  
    84. if (orientation == Qt::Horizontal) {
    85. switch (section) {
    86. case 0:
    87. return tr("");
    88.  
    89. case 1:
    90. return tr("Grupo");
    91.  
    92. case 2:
    93. return tr("Informação");
    94. default:
    95. return QVariant();
    96. }
    97. }
    98.  
    99. return QVariant();
    100. }
    101.  
    102.  
    103. bool GrupoModel::setData ( const QModelIndex & index, const QVariant & value, int role )
    104. {
    105. QMessageBox msgErro;
    106.  
    107. if (index.isValid() && role == Qt::EditRole)
    108. a.setText(value.toString());
    109. a.exec();
    110. QMessageBox::warning(parentias,"","teste");
    111. if (index.column()==1)
    112. {
    113. GrupoClass a(value.toString(),"",false);
    114.  
    115. if(grupoList.contains(a))
    116. {
    117. msgErro.setText("O grupo introduzido já existe.");
    118. msgErro.exec();
    119. return false;
    120. }
    121. else
    122. {grupoList[index.row()].setDesignacao(value.toString());
    123. }
    124. }
    125.  
    126. emit dataChanged(index,index);
    127. return true;
    128. }
    129.  
    130. if (index.isValid() && role == Qt::CheckStateRole)
    131. {
    132. grupoList[index.row()].setCheck(!grupoList[index.row()].Check());
    133. emit dataChanged(index,index);
    134. return true;
    135. }
    136. return false;
    137. }
    138.  
    139.  
    140.  
    141. void GrupoModel::setParenti(QWidget *parenti)
    142. {
    143. parentias=parenti;
    144. }
    145.  
    146.  
    147. bool GrupoModel::checkAt(int row)const
    148. {
    149. return grupoList[row].Check();
    150. }
    To copy to clipboard, switch view to plain text mode 





    I Have Problems here because emit CloseEditor
    Comipler error QObject::installEventFilter(): Cannot filter events for objects in a different thread..

    I base in the Qt demo code Spreadsheet, and some other codes like spinboxdelegate..
    You can give-me a ideia what i make wrong for i can search.

    Qt Code:
    1. #include <QtGui>
    2. #include "tabledelegate.h"
    3. #include <QMessageBox>
    4. #include <QLineEdit>
    5.  
    6. TableDelegate::TableDelegate(QObject *parent)
    7. : QItemDelegate(parent) {}
    8.  
    9. QWidget *TableDelegate::createEditor(QWidget *parent,
    10. const QModelIndex &index) const
    11. {
    12. QLineEdit *editor = new QLineEdit(parent);
    13. connect(editor, SIGNAL(editingFinished()),this, SLOT(commitAndCloseEditor()));
    14. return editor;
    15. }
    16.  
    17. void TableDelegate::commitAndCloseEditor()
    18. {
    19. QLineEdit *editor = qobject_cast<QLineEdit *>(sender());
    20. emit commitData(editor);
    21. emit closeEditor(editor);
    22. }
    23.  
    24. void TableDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
    25. {
    26. QLineEdit *edit = qobject_cast<QLineEdit*>(editor);
    27. edit->setText(index.model()->data(index, Qt::EditRole).toString());
    28.  
    29.  
    30. }
    31.  
    32. void TableDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
    33. {
    34.  
    35. QLineEdit *edit = qobject_cast<QLineEdit *>(editor);
    36.  
    37. if (edit)
    38. model->setData(index, edit->text());
    39.  
    40. }
    To copy to clipboard, switch view to plain text mode 




    PS: The code can be a little confused because I the measure that I understand I added, not bothering to logically is very confusing


    Added after 22 minutes:


    I do not very well explained in the previous post. Finally I was QTableModel implement successfully. Now I'm trying to implement the delegate to carry out further validation before sending to the model.setData. So what I did was take the examples, and create a delegate without basic validations to see if it works well. Only it is giving me error.
    Last edited by afro_cv; 4th September 2011 at 04:42.

  14. #14
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QtableWidget UNDO

    What are you using threads for?
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  15. #15
    Join Date
    Aug 2011
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QtableWidget UNDO

    Where in my code you see

  16. #16
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QtableWidget UNDO

    Quote Originally Posted by afro_cv View Post
    Where in my code you see
    I can see it here:
    I Have Problems here because emit CloseEditor
    Comipler error QObject::installEventFilter(): Cannot filter events for objects in a different thread..
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


Similar Threads

  1. undo/redo example has refactored
    By n_vova in forum Qt Programming
    Replies: 1
    Last Post: 10th May 2012, 10:04
  2. QTextEdit undo stack - Qt bug ?
    By chris_helloworld in forum Qt Programming
    Replies: 0
    Last Post: 11th November 2010, 11:22
  3. QTextEdit undo/redo
    By Derf in forum Qt Programming
    Replies: 1
    Last Post: 6th August 2009, 09:12
  4. buggy undo example
    By Gopala Krishna in forum Qt Programming
    Replies: 2
    Last Post: 21st August 2007, 19:33
  5. Implement Undo Redo
    By ankurjain in forum Qt Programming
    Replies: 5
    Last Post: 28th March 2006, 13:17

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.