2013-02-19 3 views
2

윈도우 7 SP1
MSVS 2010
Qt는 4.8.4
QLineEdit을 사용하여 내용의 시작 부분에서 커서를 시작하는 방법은 무엇입니까?

이 코드 :

#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"가 잘린 것을

enter image description here

주 커서가 줄 편집의 끝에 있습니다.

나는 디스플레이에 원하는 :

여기

enter image description here

"FG"이 잘리고 커서가 라인 편집의 시작 부분입니다.

커서 상한값과 커서 보류 값을 사용하지 않으려했습니다. 글꼴 메트릭의 elidedText를 통해 텍스트를 변환하면 처음부터 "..."과 함께 표시됩니다. 그러나 나는 그것을하고 싶지 않다.

질문 : QLineEdit를 표시 한 후 내용의 시작 부분에서 커서를 시작하는 방법이 있습니까?

답변

1

텍스트를 설정하면 잘 작동합니다 직후 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(); 
} 
+0

이것은 완벽하게 작동합니다. 나는 더 큰 프로그램에서 내 문제를 발견했다. 나는 텍스트를 설정하기 전에 커서 위치를 설정하고 있었다. 텍스트를 설정 한 후 설정하면 문제가 해결됩니다. 다시 도움을 주셔서 감사합니다! –

1

setCursorPosition(0) 나를 위해 잘 작동 :

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

(윈도우, VC++ 2010 Qt5.0.0)

+0

@Jakob Leben 귀하는 완전히 옳습니다. 사과드립니다. setCursorPostion이 작동하지 않는 더 큰 프로그램에서이 문제가 발생했습니다. 나는이 문제를 일러스트레이션을위한 간단한 프로그램으로 녹 였지만 거기에서 setCursorPostion을 테스트하는 것을 무시했다. 더 큰 프로그램에서 왜 이것이 작동하지 않는지 더 분석해야 할 것입니다. 감사! –

+0

@Macbeth : 걱정 마세요, 행운을 빌어 요! – Cameron

+0

큰 프로그램에서 문제가 발견되었습니다 : 텍스트를 설정하기 전에 커서 위치를 설정하고있었습니다. 텍스트를 설정 한 후 설정하면 내 문제가 해결됩니다. 다시 도움을 주셔서 감사합니다! –

관련 문제