2013-02-19 25 views
2

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

显示此:

enter image description here

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

我希望它显示:

enter image description here

这里的“FG”是截断,并且光标在行编辑的开始。

我试图设置光标位置和cursorBackward无济于事。如果我通过字体指标的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

这工作完美。我在我的大型程序中发现了我的问题:在设置文本之前,我正在设置光标位置。设置文本后设置它解决了我的问题。再一次感谢你的帮助! – 2013-02-19 23:15:56

1

setCursorPosition(0)为我工作得很好:

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

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

+0

@Jakob Leben你是对的。我道歉。我在setCursorPostion无法工作的更大的程序中遇到此问题。我将问题简化为一个简单的插图程序,但忽略了在那里测试setCursorPostion。我需要进一步分析为什么这不适用于我的大型项目。谢谢! – 2013-02-19 23:05:48

+0

@Macbeth:不用担心,祝你好运发现错误! – Cameron 2013-02-19 23:21:14

+0

我在我的大型程序中发现了我的问题:在设置文本之前,我正在设置光标位置。设置文本后设置它解决了我的问题。再一次感谢你的帮助! – 2013-02-20 00:24:28