C++ 在QT4.8.5中的QTextEdit上显示光标

C++ 在QT4.8.5中的QTextEdit上显示光标,c++,qt,qt4.8,qcursor,C++,Qt,Qt4.8,Qcursor,我是QT的新手。基本上,我在QT中创建一个qtexted框,我希望光标显示在初始位置。 我的简单代码是: #include "mainwindow.h" #include <QApplication> #include <QLabel> #include <QFont> #include <QtGui> #include <QPixmap> #include <QTextE

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

我的简单代码是:

    #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();
}
但没有一种方法显示游标。我已经完成了SO中的大部分帖子

有人能帮忙吗?多谢各位


注意:到目前为止,QT论坛中还没有解决方案。

在使用
QTextCursor
QTextEdit
执行任何操作之前,您应该将文本编辑器的底层文档,即
txt->document()
传递给
QTextCursor
的构造函数。我想这会使
QTextCursor
将其视为文档。然后使用
QTextCursor
将文本插入
QTextEdit
,并在插入文本或
movePosition(QTextCursor::End)
后使用
beginEditBlock()
将光标定位到所需位置

#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,字符**argv){
QApplication应用程序(argc、argv);
主窗口w;
w、 setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
w、 setStyleSheet(“背景色:黄色;”);
QTextEdit*txt=新的QTextEdit();
txt->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
txt->setFocus();
txt->setStyleSheet(“背景色:rgba(255、255、255、200);”;
txt->setGeometry(10,20100,30);
QTextCursor=QTextCursor(txt->document());
游标。插入文本(“文本1”);
cursor.beginEditBlock();
//或
//在您的情况下,以下两种方法都可以使用,因为文本已经插入
//cursor.movePosition(QTextCursor::End);
//cursor.movePosition(QTextCursor::Start);
txt->show();
返回app.exec();
}

您似乎至少缺少了
return a.exec()
在main()的末尾,我添加了return a.exec(),但在这里复制时忘记粘贴它。我已经编辑了我的代码。感谢文档中的说明,它仅在小部件处于活动窗口时设置焦点。您是否尝试过此方法以确保QTextEdit是活动窗口@布拉德利·T·休斯——我试过了。但我从来没有工作过。我已附上供参考!不工作了。我看不到光标。这是图像:真的吗?我测试了这段代码,光标正好出现在“Text 1”之后。奇怪的我已经添加了一个运行代码后得到的图像,如果我手动点击文本框,我会得到curosr,否则在“Text 1”后面就没有光标。我在嵌入式硬件板上运行这个程序,交叉编译也可以。或者试着在设备上键入一些东西,看看您键入的内容是否出现在“文本1”之后
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);
#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();
  }