作为 Qt Designer hacking 的一部分,我有兴趣在运行时删除资源(特别是:/trolltech/widgetbox/widgetbox.xml
)。有关上下文的更多详细信息,请参阅文章末尾。
我明显(并且失败)的尝试是:
QFile(":/trolltech/widgetbox/widgetbox.xml").remove();
但它返回了一个错误。
我的下一个尝试是使用Q_CLEANUP_RESOURCE(widgetbox)
,但它扩展的功能仅在 Qt Designer 的私有组件(QDesignerComponents)中可用。
另一种尝试是清除文件的内容,但它是只读的:
QFile f(":/trolltech/widgetbox/widgetbox.xml");
if (f.open(QFile::WriteOnly)) { ... } // returns false
我还尝试通过定义自己的:/trolltech/widgetbox/widgetbox.xml
. 我可以打开文件,但无法检索数据,我猜是因为它是重复资源(将资源别名为未使用的名称会使应用程序正确打印出内容)。另一方面,小部件列表正确显示。
QFile f(":/trolltech/widgetbox/widgetbox.xml");
if (f.open(QFile::ReadOnly)) {
qDebug() << "{";
qDebug() << f.readAll(); // shows nothing
qDebug() << "}";
}
有没有办法在运行时修改/删除/替换资源文件?
如果您认为这是一个XY 问题,我将解释整个上下文:我通过对独立的 IDE 进行小的调整,将 Qt Designer 集成到我自己的 IDE 中。基本上,我添加了一个编译标志来生成动态库而不是可执行文件,并添加了一些选项来公开主窗口。
在此 IDE 中,我想添加一个选项以避免用户使用默认小部件并将列表限制为一组自定义小部件。我提到的资源是包含 Qt Designer 中默认可用的小部件列表的文件。可以通过插件轻松包含其他小部件,但我还没有找到删除默认小部件的方法。
我有一个选择是使该负载成为可选的,但它会在许多项目中产生一连串的变化。我想避免过多地修改 Qt Designer。