如何从qt5中的.ui文件中读取小部件?
我正在尝试从.ui文件中获取小部件列表。 下面是一些代码:如何从qt5中的.ui文件中读取小部件?,qt,qt5,qt-designer,Qt,Qt5,Qt Designer,我正在尝试从.ui文件中获取小部件列表。 下面是一些代码: QUiLoader loader; QFile file(fname); file.open(QFile::ReadOnly); QWidget *myWidget = loader.load(&file, this); file.close(); QStringList avlb_wd = loader.availableWidgets(); QMessag
QUiLoader loader;
QFile file(fname);
file.open(QFile::ReadOnly);
QWidget *myWidget = loader.load(&file, this);
file.close();
QStringList avlb_wd = loader.availableWidgets();
QMessageBox msg;
foreach (const QString &str, avlb_wd)
{
msg.setText(str);
msg.exec();
}
但正如我所看到的,availableWidgets()提供了所有小部件,而不是.ui文件中的小部件。
我怎样才能做到呢?
谢谢转发 创建
QUiLoader
的子类,并重新实现,和(还有,但实际上不再支持,除非手动编辑ui
文件)
每次ui加载程序创建新的小部件、布局或操作时,都会调用这些函数。因此,只需调用基类实现来获取所创建的对象,然后就可以在返回它之前收集所需的任何信息
更新:
因此,基本的QUiLoader子类如下所示(根据需要添加其他重载):
嗨,我对Qt环境很陌生。你能告诉我如何制作子类和重新实现上述功能吗?或者将我链接到文档,在那里我可以找到如何操作的信息?一些例子会很有帮助。谢谢。@user3185491。我添加了一些代码来启动,但实际上,它只是非常基础的C++程序。
class UiLoader : public QUiLoader
{
Q_OBJECT
public:
UiLoader(QObject *parent = 0) : QUiLoader(parent) { }
virtual QWidget* createWidget(const QString &className,
QWidget *parent = 0, const QString &name = QString())
{
QWidget* widget = QUiLoader::createWidget(className, parent, name);
// do stuff with className, name, widget, etc
return widget;
}
};