我正在使用 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/