2016-01-08 5 views
-1

Я просматриваю код Qt и вижу, что вместо того, чтобы просто использовать QMessageBox, программа проверяет, определен ли QAPPLICATION_H. Если это не так, тогда используется какое-то системное сообщение по умолчанию. Вот как это выглядит:Совместимость QMessageBox

bool Connect() 
{ 
     ... 
     { 
#ifdef QAPPLICATION_H 
      QMessageBox::critical(0,QString("Error!"),QString("Cannot Connect To PS3")); 
#else 
      MessageBoxA(0,"Error!","Cannot Connect To PS3",MB_ICONINFORMATION); 
#endif 
      return false; 
     } 
     else 
     { 
      ... 
      #ifdef QAPPLICATION_H 
      QMessageBox::information(0,QString("Sucess!"),QString("Connected To PS3!")); 
#else 
      MessageBoxA(0,"Sucess!", "Connected To PS3", MB_ICONINFORMATION); 
#endif 
      return true; 

     } 
} 

В принципе, мой вопрос: что совместимость QMessageBox? Если я выпустил программу, которая использует только QMessageBox, смогут ли люди, у которых нет Qt, увидеть сообщение? Я просто не хочу проверять это каждый раз в своем собственном коде, а также стандартное поле без Qt выглядит хуже.

+0

«Стандартная» 'MessageBoxA' здесь предназначена для Windows. Таким образом, ответ будет зависеть от той платформы, на которую вы нацеливаетесь. – MrEricSir

+0

Итак, кто-нибудь, работающий под Windows, сможет увидеть QMessageBox? Потому что то, что я делаю, это только для окон. –

+2

Непонятно, что вы спрашиваете - будет ли ваше приложение использовать Qt или нет, и какой тип окна сообщения будет отображаться, будут решаться во время компиляции. Ожидаете ли вы, что пользователи будут компилировать исходный код на своей машине? – MrEricSir

ответ

0

Qt - это кросс-платформа. QMessageBox будет доступен на любой платформе, в которой вы скомпилируете свой код. Я не знаю, почему в указанном коде есть определение и вызов MessageBoxA, возможно, разработчик хотел иметь возможность отображать окно с окнами и окнами, в случае, если целевой платформой являются окна.