需求
主要问题就是文字会出现在图标下面,所以希望从图标右边开始输入。
前言
这个问题花了很长时间都没有得到解决,网上搜索了半天,诸如光标位置设定的setCursorPosition,setFocus,LineEdit文本位置设定的setTextCursor,cursorForward,文本首尾初始化的setAlignment都不能解决问题,下面的代码都是一些尝试。
一些尝试
// int i = ui->lineEdit->cursorPosition();
// i+=10;
// qDebug() << i;
// ui->lineEdit->setCursorPosition(i);
// ui->lineEdit_2->setCursorPosition(i);
// ui->lineEdit->setFocus();
// ui->lineEdit_2->setFocus();
//ui->lineEdit->setCursorPosition(120);
//ui->lineEdit->setFocus();
//ui->lineEdit->setCursorPosition(ui->lineEdit->text().size());
//tmpCursor.setPosition(20);
// ui->lineEdit->setTextCursor(tmpCursor);
//ui->lineEdit->setAlignment(Qt::AlignJustify);
//ui->lineEdit->cursorForward(10);//往右
//ui->lineEdit->setFocusPolicy(Qt::NoFocus); // 得到焦点时,不显示虚线框
解决方案
图标就是一个label。然后这个size是图标的大致的大小(并不精确),但是留出这个空间也够用了。
//一般小图标就是这个大小
QSize size = QSize(30, 30);
// 设置输入框中文件输入区,不让输入的文字被隐藏在按钮下
ui->lineEdit->setTextMargins(size.width(), 1, 1 , 1);
代码位置
在这个位置设定即可:
参考
https://blog.csdn.net/sniper_bing/article/details/47039939