qt4 - изменить цвет текстового курсора в qlineedit?

Я создал подкласс qlineedit и написал собственное редактирование строки с текстом по умолчанию. Текст по умолчанию отображается серым цветом, пока пользователь не начнет вводить в него какой-либо текст. также редактирование строки имеет ввод маски времени. он принимает ввод только в диапазоне 23:59:59.

проблема в том, что когда строка редактирования пуста и текст по умолчанию отображается серым цветом, курсор также серый. Я хотел бы знать, как я могу изменить цвет курсора на черный, в то время как текст по умолчанию имеет серый цвет.

Я попытался переопределить paintevent. я видел исходный код qlineedit и увидел, что QLineControl::DrawCursor отвечает за отрисовку курсора в paintevent. но я понятия не имею, как изменить цвет пера, чтобы он мог повлиять на цвет курсора. Любые идеи о том, как это сделать? Спасибо.

 void QCustomLineEdit::paintEvent(QPaintEvent * pe)
 {
    QLineEdit::paintEvent(pe);
    QPainter painter;
    painter.begin(this);
    painter.setPen(Qt::red);
    painter.end();
 }

person arash.k    schedule 19.04.2015    source источник


Ответы (1)


QLineEdit имеет свойство с именем placeholderText, которое вы можете использовать, чтобы настроить отображение серого текста, когда в поле редактирования нет текста. Цвет курсора не меняется, и когда вы начинаете печатать, текст-заполнитель исчезает.

введите здесь описание изображения

person Uga Buga    schedule 21.04.2015
comment
Да, я знаю об этом свойстве. Я не использовал это свойство и переписал свой собственный qlineEdit, потому что я хотел, чтобы каждый раз, когда курсор возвращался в позицию 0, снова появлялся текст по умолчанию. но использование этого свойства не дает мне той функции, которую я хочу. - person arash.k; 22.04.2015