Отобразить курсор на QTextEdit в QT4.8.5

Я новичок, работающий над QT. В основном я создаю поле QTextEdit в QT, и я хочу, чтобы курсор отображался в начальной позиции.
введите описание изображения здесь

Мой простой код:

    #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.

Кто-нибудь может помочь? Большое спасибо.

П.С .: До сих пор на форумах QT не было получено никаких решений.

3

Решение

Вы должны передать базовый документ текстового редактора, т.е. 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();
}

введите описание изображения здесь

2

Другие решения


По вопросам рекламы [email protected]