QLineEdit::setMaxLength(int)?
QLineEdit::setMaxLength(int) - не подходит потому что задает максимальную строки в символах, а не в байтах (латинская буква занимает в юникоде 1 байт, русская - 2, китайский иероглиф - 3).
а для QPlainTextEdit можно в слоте, подключённому к сигналу textChanged(), запоминать старый текст и проверять текущее количество символов/байт, и если оно больше заданной величины, то возвращать старый текст.
Для QPlainTextEdit, уже делается на подобие этого, но хочется общее решение. Поэтому рассматриваю обработку QInputmethodEvent который, вроде бы уже несет в себе всю необходимую мне информацию:
const QString & commitString () const
const QString & preeditString () const
int replacementLength () const
int replacementStart () const
но не понятно когда он происходит