我正在使用Qt5创建一个Qt应用程序。
以下是我的代码:
static QStateMachine *myStateMachine = new QStateMachine(nullptr);我只想创建一次QStateMachine,一直使用同一台机器。
但是,我了解到,在QObjects instantiated.You能够阅读Qt文档有关QApplication的详细描述之前,不应该实例化所有的QApplication。
我的问题是:
为什么在QObjects实例化之前不应该实例化所有的QApplication?
发布于 2018-09-30 15:08:00
蒂亚戈·马西埃拉( Thiago )在Qt兴趣列表上的2014年线程中写道:
在创建QCoreApplication之前不支持Qt。您的用例不受支持,因此不需要回答。 别这么做。 注意:医生错了。
他是个长期的Qt维护者 (并在特罗尔技术公司工作)。因此,我一般会听从他的建议。
我想他的意思是,在不同的系统上--特性最终需要一些初始化的机会。它可能不是所有的系统,也可能是在以后的版本中引入的需求。因此,Qt开发人员可能保留使任何给定的特性要求it...and的权利,不会保证系统中的任何东西在初始化之前都能工作。
(注:这类类似于在C++中的概念)
然而,他稍微软化了立场,在以后的一篇文章中。
这是否意味着静态对象也不受支持?不支持,但大多数情况下它们都起作用。我们还将在创建QCoreApplication之前,在解析命令行和其他设置过程时修复main()中可能出现的错误。 小心点,因为有些事情是行不通的。例如,QString::For Local8Bit在QCoreApplication之前不能工作。
要点是,给出今天QApplication实例化之前可以做的事情列表应该被认为是误导。他们不想列那份名单。
如果你发现你真的必须这样做,而且你看起来没有问题,那就做好准备,让它在将来的发行版中崩溃(或者甚至在另一台机器上)。
https://stackoverflow.com/questions/52567044
复制相似问题