5

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();
}

显示这个:

在此处输入图像描述

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

我希望它显示:

在此处输入图像描述

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

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

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

4

2 回答 2

5

在设置文本之后将光标位置设置为 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();
}
于 2013-02-19T22:41:48.557 回答
2

setCursorPosition(0)对我来说很好:

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

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

于 2013-02-19T22:41:31.777 回答