Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-123556

QT document inserted in Chinese, QTextDocument::contentsChange() signal contains the first parameter int position not updated..Here are all the test codes

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P2: Important P2: Important
    • None
    • 5.12.9, 6.3.0
    • GUI: Text handling
    • None
    • Windows

      Firstly, create a new QTextDocument object pointer, and the QTextCursor object retrieves the mouse position of the pointer document. Then add a QTextDocument object to the QTextEdit class. Finally, use a signal slot to print the parameters in QTextDocument:: contentsChange. When the document is inserted in English, the positional parameters are updated normally. Insert Chinese position without updating.

       

      //代码占位符
      ==========================================
      mainwindow.cpp
      =========================================
      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      #include <QDebug>
      #include <QTextEdit>
      #include <QTextDocument>
      #include <QTextCursor>
      #include <QMainWindow>
      MainWindow::MainWindow(QWidget *parent) :
      QMainWindow(parent),
      ui(new Ui::MainWindow)
      {
        ui->setupUi(this);
        QTextDocument *doc = new QTextDocument;
        QTextCursor cur(doc);
        QTextEdit *edit = new QTextEdit(this);
        connect(doc,&QTextDocument::contentsChange,this,&MainWindow::DocContentsChange);
        edit->setDocument(doc);
        setCentralWidget(edit);
      }
      MainWindow::~MainWindow()
      {
        delete ui;
      }
      void MainWindow::DocContentsChange(int aFrom, int aCharsRemoves, int acharsAdded)
      {
         qDebug() << "aFrom" << aFrom << "aCharsRemoves" << aCharsRemoves << "acharsAdded" << acharsAdded;
      }
      ============================================
      mainwindow.h
      =============================================
      #ifndef MAINWINDOW_H
      #define MAINWINDOW_H
      #include <QMainWindow>
      namespace Ui {
        class MainWindow;
      }
      class MainWindow : public QMainWindow
      {
      Q_OBJECT
        public:
      explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
      public slots:
         void DocContentsChange(int aFrom,int aCharsRemoves,int acharsAdded);private:
         Ui::MainWindow *ui;
      };#endif // MAINWINDOW_H
      
      ==========================================
      main.cpp
      ==========================================
      #include "mainwindow.h"
      #include <QApplication>int main(int argc, char *argv[])
      {
         QApplication a(argc, argv);
         MainWindow w;
         w.show();
         return a.exec();
      } 

       

       

        1. 1.png
          1.png
          187 kB
        2. 2.jpg
          2.jpg
          58 kB
        3. 3.jpg
          3.jpg
          68 kB
        4. 4.jpg
          4.jpg
          65 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            esabraha Eskil Abrahamsen Blomfeldt
            tonyqq liu xu
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:

                There are no open Gerrit changes