如何使用QLineEdit使光标从其内容的开头开始?

时间:2013-02-19 22:21:01

标签: c++ qt

Windows 7 SP1
MSVS 2010
Qt 4.8.4

此代码:

#include <QTGui>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMainWindow*          window = new QMainWindow;
    QLineEdit*         line_edit = new QLineEdit;

    line_edit->setText("ABCDEFG");
    line_edit->setFixedSize(40,20);
    window->setCentralWidget(line_edit);
    window->show();
    return app.exec();
}

显示:

enter image description here

请注意,“AB”被截断,光标位于行编辑的末尾。

我希望它显示:

enter image description here

此处“FG”被截断,光标位于行编辑的开头。

我试过setCursorPosition和cursorBackward无济于事。如果我通过字体度量的elidedText转换文本,它将从头开始显示尾部“...”。但我不想这样做。

问题:有没有办法在显示QLineEdit后让光标从其内容的开头开始?

2 个答案:

答案 0 :(得分:2)

在设置文本后将光标位置设置为0应该可以正常工作。至少它在Linux上运行,Qt 4.8.3。

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMainWindow*          window = new QMainWindow;
    QVBoxLayout*          layout = new QVBoxLayout;
    QLineEdit*         line_edit = new QLineEdit;

    line_edit->setText("ABCDEFG");
    line_edit->setFixedSize(40,20);
    line_edit->setCursorPosition(0);
    layout->addWidget(line_edit);
    window->setCentralWidget(line_edit);
    window->show();
    return app.exec();
}

答案 1 :(得分:1)

setCursorPosition(0)对我很好:

// ...
line_edit->setFixedSize(40,20);
line_edit->setCursorPosition(0);
// ...

(Windows,VC ++ 2010,Qt5.0.0)