Простой вызов SendMessage(ui->progressBar->winId(), PBM_SETSTATE, PBMST_ERROR, 0) в конструкторе MainWindow ничего не изменяет.
winId() имеют только основные окна (главное окно, окна диалогов, messagebox'ы). Остальные дочерние окна (виджеты) - рисованные. С помощью этих методов можно переключить Qt на работу с родными окнами ОС:
Use the QT_USE_NATIVE_WINDOWS=1 in your environment.
Set the Qt::AA_NativeWindows attribute on your application. All widgets will be native widgets.
Set the Qt::WA_NativeWindow attribute on widgets: The widget itself and all of its ancestors will become native (unless Qt::WA_DontCreateNativeAncestors is set).
Call QWidget::winId to enforce a native window (this implies 3).
Set the Qt::WA_PaintOnScreen attribute to enforce a native window (this implies 3).
Только я бы не советовал этого делать. Родные окна сильно тормозят, если менять их размеры, через splitter например.
Через стили не получиться задать именно такой вид. Полоски прогресса в стилях отдельные сущности, поэтому невозможно узнать где начало и конец полоски, чтобы задать затенение, да и градиент не установить, раз сама полоса прогресса это набор мелких кусочков (chunk'ов). Но нечто похожее сделать можно.