gpt4 book ai didi

c++ - QT4.8.5在QTextEdit上显示光标

转载 作者:太空狗 更新时间:2023-10-29 21:40:43 25 4
gpt4 key购买 nike

我是 QT 的新手。基本上我在 QT 中创建一个 QTextEdit 框,我希望光标显示在初始位置。 enter image description here

我的简单代码是:

    #include "mainwindow.h"
#include <QApplication>
#include <QLabel>
#include <QFont>
#include <QtGui>
#include <QPixmap>
#include <QTextEdit>
#include <QTextCursor>
#include <QLineEdit>

int main(int argc, char *argv[])
{

QApplication a(argc, argv);
MainWindow w;
w.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
w.setStyleSheet("background-color: yellow;");
w.show();

QTextEdit *txt = new QTextEdit();
txt->setText("Text 1");
txt->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
txt->setFocus();
txt->setStyleSheet("background-color: rgba(255, 255, 255, 200);");
txt->setGeometry(10,20,100,30);
txt->show();
return a.exec();
}

这会在窗口 w 上创建一个简单的文本框。

我没有使用鼠标或键盘,因为它们用于嵌入式硬件板。

但是在显示文本之后应该显示光标。

我尝试了各种方法来让光标显示在 QTextEdit 上,例如:

QTextCursor cursor;
QTextEdit *editor = new QTextEdit();

QTextCursor cursor(editor->textCursor());
cursor.movePosition(QTextCursor::Start);
cursor.setPosition(5);
cursor.setPosition(9, QTextCursor::KeepAnchor);

txt->moveCursor(QTextCursor::End,QTextCursor::MoveAnchor);
txt->setCursorWidth(20);
txt->setTextCursor(cursor);

但是没有一个方法显示光标。我已经完成了 SO 中的大部分帖子。

有人可以帮忙吗?非常感谢。

P.S : 目前QT论坛没有解决方案

最佳答案

在使用QTextCursor之前,您应该将文本编辑器的底层文档即txt->document()传递给QTextCursor的构造函数> 在 QTextEdit 上做任何事情。我猜它使 QTextCursor 将其视为文档。然后使用 QTextCursor 将文本插入 QTextEdit 并在插入文本后使用 beginEditBlock() 将光标定位在您想要的位置或 移动位置(QTextCursor::End)

#include <QLabel>
#include <QFont>
#include <QtGui>
#include <QPixmap>
#include <QTextEdit>
#include <QTextCursor>
#include <QLineEdit>

int main( int argc, char **argv ) {
QApplication app( argc, argv );

MainWindow w;
w.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
w.setStyleSheet("background-color: yellow;");


QTextEdit *txt = new QTextEdit();
txt->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
txt->setFocus();
txt->setStyleSheet("background-color: rgba(255, 255, 255, 200);");
txt->setGeometry(10,20,100,30);


QTextCursor cursor = QTextCursor(txt->document());
cursor.insertText("Text 1");
cursor.beginEditBlock();
// OR
//In your case, either methods below will work since the text has been inserted already
//cursor.movePosition(QTextCursor::End);
//cursor.movePosition(QTextCursor::Start);

txt->show();

return app.exec();
}

enter image description here

关于c++ - QT4.8.5在QTextEdit上显示光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30390730/

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