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」は切り捨てられ、カーソルは行編集の先頭にあります。

CursorPosition と 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 に答える