Поскольку кажется, что вам не нужны истинные возможности редактирования QLineEdit
, замените его на QLabel
.Вы можете вложить его в рамку, чтобы он выглядел как поле для редактирования.Затем вы можете смоделировать мигающий курсор, используя QTimer
, который не требует фокусировки для работы.
Запустите таймер с интервалом 500 мс, а в слот таймера вставьте или удалите '|'символ, подобный следующему:
void MainWindow::slot_timeout()
{
QString labelText = label->text();
if(labelText.right(1) == "|")
{
labelText = labelText.left(labelText.size()-1);
}
else
{
labelText += "|";
}
label->setText(labelText);
}
Когда нажата кнопка выбора, вставьте соответствующий символ в начале строки, чтобы мигающий курсор оставался на правом конце.
void MainWindow::slot_selectClick()
{
QString labelText = label->text();
labelText.prepend("x");
label->setText(labelText);
}
Этого может быть достаточно для достижения желаемого эффекта.