我应该在调用 Qt 的 setui 方法后检查空指针吗?

Should I check for null pointers after calling Qt's setui method?

我正在使用 Qt Designer 为我的应用程序生成许多不同的 *.ui 文件。然后按照 single inheritance 方法使用这些文件。

调用 ui.setupUi(this); 后,是否需要检查 GUI 元素是否为空?我知道 setupUi 会创建 GUI 中所有对象的实例,但它 returns 无效并且似乎不使用异常。 Qt 是否缺少某种保证,让我知道 UI 元素可以安全使用,或者每次我想触摸它们时我都应该进行空检查吗?

可以在此处文档的示例代码中看到一个示例:https://doc.qt.io/qt-5/qtdesigner-calculatorform-example.html

请注意,在使用指向 UI 元素的指针之前不执行空值检查。为了示例的简洁起见,这可能已被省略,但我从未在示例代码中看到它。如果我可以安全地假设 UI 元素存在,我可以从我的代码中删除很多 if 语句...

After calling ui.setupUi(this); do I need to check and see if any GUI elements are null?

没有。你不需要那样做。

setupUi() 不会吞下异常。它根本没有任何 try 块。 (在 Creator 中,当光标位于 setupUi() 调用上时,您只需按 F2 即可跳转到该函数并检查它。)如果 new 抛出,或者其中一个小部件构造函数抛出,您将得到那个例外。据我所知,QWidget 构造函数不会抛出,但 new 可能会抛出(例如,内存不足。)

您甚至不需要自己在调用 setupUi() 的构造函数中检查异常。如果 setupUi() 抛出,那么反过来你自己的构造函数会自动重新抛出异常。

总之,长话短说,所有这些意味着您永远不需要检查任何 ui 小部件指针是否为空。