Поясню как у меня сейчас и чего хочу.
Я сажаю eventFilter на QComboBox.
В eventFilter ловлю клавиши
if (event->type() == QEvent::KeyPress)
Дальше преобразовываю
if (m_caps == 0)//все строчные
{
sText.insert(position, str.toLower());
ed->setText(sText);
ed->setCursorPosition(position+1);
}
else if (m_caps == 1)//все прописные
{
sText.insert(position, str.toUpper());
ed->setText(sText);
ed->setCursorPosition(position+1);
}
Где ed - это lineEdit() из QComboBox.
То есть видишь, тут уже приходится определять позицию и вставлять туда преобразованный символ. Уже гимор. Еще веселее, что на введенную клавишу появляется комплетер и все дальнейшие нажатия клавиш адресуются ему. Приходится приставлять костыли чтобы перегонять эти нажатия в lineEdit().
Хотелось бы просто чтобы все участники процесса принимали сразу преобразованную клавишу.
Сейчас пытаюсь сделать нечто вроде этого.
Это eventFilter для qApp. Однако не прокатывает.
if ((event->type() == QEvent::KeyPress))
{
QKeyEvent *ev = new QKeyEvent(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier);
QApplication::sendEvent(target, ev);
}
PS этот код приводит к зацикливанию. на sendEvent опять срабатывает eventFilter и так далее