Esto es realmente un comentario a la respuesta de Biber, pero no tengo suficientes representantes para publicarlos: P. Es solo una idea de algo que leo, nunca lo intenté: S.
Se trata de la forma de saber si se presiona shift, ¿ha visto el Qt::KeyboardModifiers que se puede detectar en un Qt::KeyEvent? Hay un modificador de turno, podría ser útil. Por cierto, también vi que hay una clave llamada Qt :: Key_CapsLock que también se puede detectar en un evento clave.
Y leyendo el enlace del informe de errores en el enlace del comentario de Narek sobre su pregunta, parece que la función simplemente no está disponible, así que creo que la manera de hacerlo es hacer algo similar a lo que Biber sugiere. Pero para evitar esperar a que el usuario presione una tecla, quizás pueda disparar/simular un evento de teclado que coloca una letra en su QLineEdit. Luego, compruebe lo que dijo Biber: si la letra es mayúscula y se pulsa shift, entonces ... etc. Y finalmente elimine el contenido de QLineEdit. Esperemos que suceda lo suficientemente rápido como para evitar que el usuario lo note: P.
Es un trabajo un poco feo, pero podría funcionar. ¡Avíseme si lo hace!
No hay manera de comprobar el estado CapsLock con Qt (hay cuestiones abiertas con respecto a este en el Bug Tracker Qt (http://bugreports.qt.nokia.com/browse/QTBUG-8388) ¿Es su aplicación multiplataforma? –