gpt4 book ai didi

c++ - Qt QTextEdit 只加载一半的文本文件

转载 作者:行者123 更新时间:2023-11-28 07:59:59 26 4
gpt4 key购买 nike

我有一个问题:我的项目是一个非常简单的项目,有一个 QTextEdit 和一个 QSyntaxHighlighter,我试图加载一个 .cpp 文件并突出显示该文件的第八行,但是 QTextEdit 无法加载整个文件,如果我要求它突出显示该行。

下图显示了问题:

enter image description here

应用相关代码如下:

void MainWindow::openFile(const QString &path)
{
QString fileName = path;

if (fileName.isNull())
fileName = QFileDialog::getOpenFileName(this,
tr("Open File"), "", "C++ Files (*.cpp *.h)");

if (!fileName.isEmpty()) {
QFile file(fileName);
if (file.open(QFile::ReadOnly | QFile::Text))
editor->setPlainText(file.readAll());

QVector<quint32> test;
test.append(8); // I want the eighth line to be highlighted
editor->highlightLines(test);
}
}

#include "texteditwidget.h"

TextEditWidget::TextEditWidget(QWidget *parent) :
QTextEdit(parent)
{
setAcceptRichText(false);
setLineWrapMode(QTextEdit::NoWrap);

}



// Called to highlight lines of code
void TextEditWidget::highlightLines(QVector<quint32> linesNumbers)
{

// Highlight just the first element
this->setFocus();
QTextCursor cursor = this->textCursor();
cursor.setPosition(0);
cursor.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, linesNumbers[0]);
this->setTextCursor(cursor);
QTextBlock block = document()->findBlockByNumber(linesNumbers[0]);
QTextBlockFormat blkfmt = block.blockFormat();
// Select it
blkfmt.setBackground(Qt::yellow);
this->textCursor().mergeBlockFormat(blkfmt);
}

但是,如果您想使用我使用的 cpp 文件(在目录 FileToOpen\diagramwidget.cpp 中)测试项目,这里是完整的源代码

http://idsg01.altervista.org/QTextEditProblem.zip

我已经尝试解决这个问题很长时间了,我开始怀疑这是否是一个错误或类似的问题

最佳答案

QTextEdit 不能一次接受如此大量的文本。拆分它,例如像这样:

if (!fileName.isEmpty()) {
QFile file(fileName);
if (file.open(QFile::ReadOnly | QFile::Text))
{
QByteArray a = file.readAll();

QString s = a.mid(0, 3000);//note that I split the array into pieces of 3000 symbols.
//you will need to split the whole text like this.
QString s1 = a.mid(3000,3000);

editor->setPlainText(s);
editor->append(s1);
}

关于c++ - Qt QTextEdit 只加载一半的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11743137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com