Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QMessageBox兼容性_C++_Qt_Qmessagebox - Fatal编程技术网

C++ QMessageBox兼容性

C++ QMessageBox兼容性,c++,qt,qmessagebox,C++,Qt,Qmessagebox,我正在查看一些Qt代码,发现该程序不仅仅使用QMessageBox,而是检查是否定义了QAPPLICATION\u H。如果不是,则使用一些默认的系统消息框。下面是它的样子: bool Connect() { ... { #ifdef QAPPLICATION_H QMessageBox::critical(0,QString("Error!"),QString("Cannot Connect To PS3")); #else

我正在查看一些Qt代码,发现该程序不仅仅使用
QMessageBox
,而是检查是否定义了
QAPPLICATION\u H
。如果不是,则使用一些默认的系统消息框。下面是它的样子:

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框看起来更糟糕

Qt是跨平台的QMessageBox将在编译代码的任何平台上可用。我不知道为什么在列出的代码中定义和调用MessageBoxA时,如果目标平台是windows,开发人员可能希望能够显示更多的windows外观消息框。

此处的“标准”MessageBoxA是特定于windows的。因此,答案将取决于您的目标平台。那么运行Windows的任何人都可以看到QMessageBox?因为我所做的只是针对windows的,你问什么还不是很清楚——你的应用程序是否使用Qt,以及出现哪种类型的消息框都是在编译时决定的。你希望用户在他们的机器上编译源代码吗?不,我是问任何运行Windows的普通用户(没有安装Qt)能否打开用Qt编写的程序,并访问
QMessageBox
?或者,如果消息框的类型为
MessageBoxA
,他们是否只能看到该消息框?如果我要发布一个仅为Windows使用Qt编写的应用程序,我是否可以避免完全合并
MessageBoxA
,而只使用
QMessageBox
?或者这会限制大多数用户,因为他们没有安装Qt吗?没有为非开发人员用户安装Qt这样的事情。您的应用程序需要从安装程序中部署QT运行时DLL、VisualC++运行时DLL等,或者需要静态链接那些运行时。这两种方法都不是为了让消息框真正出现在屏幕上。