Можно ли использовать сигналы для сообщения об ошибках?
Да, но я бы вообще сделал эту ситуацию зависимой. Если ошибка может произойти асинхронно, то сигнал, указывающий на это, определенно является правильным. Если ошибка возникает только тогда, когда клиентский код вызывает одну определенную функцию, ошибка должна быть в ответе этой функции, а не в качестве сигнала. Однако между ними существует множество ситуаций, которые могут быть выполнены в каждом конкретном случае.
Кроме того, механизмы слотов сигналов могут упростить межпотоковую связь (что вполне может рассматриваться как асинхронный случай), и я буду использовать их для этой цели (ошибка или нет).
Можно ли предположить, что сигнал будет обработан?
Сигналы (философски) предназначены для указания того, что что-то произошло. Как указали другие, никогда не стоит предполагать, что сигнал будет сопоставлен со слотом или даже просто с одним другим слотом.
Можно ли использовать сигналы для инициирования действий? Например. сигнал displayInfoScreen () должен обрабатываться слотом, в котором отображается информационный экран.
Сигналы могут использоваться для инициирования действий, но, вероятно, не так, как вы думаете. Сигнал указывает, что foo произошло. Если код, отслеживающий ваш класс, решает, что когда происходит foo , должен отображаться диалог, тогда сигнал использовался для запуска этого действия. Однако, как правило, класс, испускающий сигнал, не несет ответственности за обеспечение правильного действия, поскольку он не несет ответственности за выполнение этого действия. (Если это так, то он должен быть частью того же класса, и никакой сигнал не понадобится.)