我是QT的新手。基本上我在QT中创建一个QTextEdit框,我希望Cursor显示在初始位置。
我的简单代码是:
#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论坛上没有获得任何解决方案。答案 0 :(得分:2)
您应该将文本编辑器的基础文档txt->document()
传递给QTextCursor
的构造函数,然后才能使用QTextCursor
对QTextEdit
执行任何操作。我想这会让QTextCursor
将其视为文档。然后,您使用QTextCursor
将文字插入QTextEdit
,并在插入文字或beginEditBlock()
后使用movePosition(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();
}