tonyQQ 发表于 2024-3-20 17:45:18

QTextDocument::contentsChange信在输入中文,pos位置不刷新

QTextDocument::contentsChange信号为什么在输入中文后,位置不变。
下面是简单创建的主窗口测试代码
==============================================================
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]
查看完整版本: QTextDocument::contentsChange信在输入中文,pos位置不刷新