При использовании QPlainTextEdit текст-заполнитель не исчезает, когда пользователь начинает печатать. Напечатанный текст и текст-заполнитель отображаются одновременно, перекрывая друг друга.
Этого не происходит с QLineEdit — это влияет только на QPlainTextEdit.
Среда
- Версия Qt: 6.10.1
- ОС: Windows 11
- Компилятор: MSVC 2022
main.cpp
Код: Выделить всё
cpp
#include
#include
#include
#include
#include
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
QDialog dialog;
dialog.setWindowTitle("QPlainTextEdit Placeholder Bug");
dialog.setMinimumWidth(500);
auto *form = new QFormLayout(&dialog);
auto *lineEdit = new QLineEdit;
lineEdit->setPlaceholderText("QLineEdit placeholder");
form->addRow("QLineEdit:", lineEdit);
auto *plainEdit = new QPlainTextEdit;
plainEdit->setPlaceholderText("QPlainTextEdit placeholder");
plainEdit->setFixedHeight(90);
form->addRow("QPlainTextEdit:", plainEdit);
dialog.show();
return app.exec();
}
- Запустите приложение
- Нажмите на поле QPlainTextEdit и начните вводить текст.
- Текст-заполнитель остается видимым, перекрываясь с набранным текстом

Ожидаемое поведение
Текст-заполнитель должен исчезнуть, как только пользователь начнет печатать, точно так же, как QLineEdit.
Вопрос
Есть ли простой способ решения этой проблемы? Или об этом следует сообщить как об ошибке Qt?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -qt-6-10-1
Мобильная версия