找回密码
 立即注册
收起左侧

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

0
回复
170
查看
[复制链接]
累计签到:3 天
连续签到:1 天
来源: 2024-3-20 17:45:18 显示全部楼层 |阅读模式
2Qter豆
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();
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了