我有:
from PySide import QtGui, QtUiTools
有什么区别:
ui_file = QtCore.QFile('my_ui.ui')
ui_file.open(QtCore.QFile.ReadOnly)
my_ui = QtUiTools.QUiLoader().load(ui_file)
ui_file.close()
和
self.ui = QtUiTools.QUiLoader().load('my_ui.ui')
我问,因为后者似乎更简单,它似乎与第一块代码一样好用。我搜索了第一块代码并且错误地没有实现它,但是.ui文件加载得很好。这让我有点困惑。
答案 0 :(得分:2)
查看QUILoader::load
的文档,它的第一个参数是 QIODevice ,它基本上是一个可以处理任何数据块的接口类,如QFile, Q缓冲器。
在quiloader.cpp中,您可以看到它尝试打开设备并阅读其内容。基本上你的第一个解决方案不需要打开文件。
QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget)
{
Q_D(QUiLoader);
if (!device->isOpen())
device->open(QIODevice::ReadOnly|QIODevice::Text);
return d->builder.load(device, parentWidget);
}