💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 10.6 问题与解答 问:动态加载方式与编译时加载.ui 文件的方式,在原理上有什么不同? 答:从原理上来讲,动态加载方式并不需要通过 uic 把.ui 文件转换成 C++代码,它是程序运行时的时候使用 QUiLoader 类载入该文件的,而编译时加载.ui 文件的方法,是需要借助 uic 把.ui 文件中的内容转化为 C++代码的,并生成 ui_xxx.h 文件。就像下面这种方式: 问:使用动态加载方式时,我如何访问窗体中的各个子窗口部件呢? 答:可以通过调用全局函数 qFindChild<T>()来访问这个窗体中的各个子窗口部件,举例如下: ``` ui_findButton = qFindChild<QPushButton*>(this, "findButton"); ui_textEdit = qFindChild<QTextEdit*>(this, "textEdit"); ui_lineEdit = qFindChild<QLineEdit*>(this, "lineEdit"); ``` 在我们提供的 calculatorbuilder 例子里面有这个函数的具体用法,大家可以参考 ,更为详细的内容请查看 Qt Assistant。 也可以使用 QObject::findChild<T>来访问这个窗体中的各个子窗口部件,举例如下: ``` QButton *button = myWidget->findChild< QButton *>( tr(“ok”) ); if (button) { ... } ``` 这里的 findChild<T>()函数是一个模板成员函数,它可以返回与给定的名字和类型相匹配的子对象。注意,由于受编译器的制约,它不能在 MS VC6 中使用。