c++ - 调用 Qt 的 setui 方法后是否应该检查空指针?

标签 c++ qt error-handling qwidget null-pointer

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

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

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

请注意,在使用指向 UI 元素的指针之前不会执行 null 检查。为了示例的简洁,这可以被省略,但我在示例代码中没有看到它。如果我可以安全地假设 UI 元素存在,我可以从代码中删除大量 if 语句...

最佳答案

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

没有。您不需要这样做。

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

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

无论如何,长话短说,这一切意味着您永远不需要检查任何 ui 小部件指针是否为空。

关于c++ - 调用 Qt 的 setui 方法后是否应该检查空指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57300230/

相关文章:

c++ - 将 GMP 添加到自己的库

c# - 当前状态对象 - C#

c++ - OpenCV:在 CV_16UC1 垫子上画一个白色(!)圆圈

c++ - 堆栈及其实现

c++ - 固定 QString 大小(长度)

c++ - Qt - QTreeWidgetItem 未被编辑

c++ - 在 C++ 中使用 Well44497a 生成随机数

c++ - 如何允许文本文件中丢失数据

sql - SQL try catch 由最近的变量引起的确切错误

php - 未设置 Cookie,但其余代码正在执行?