1

我开发了一个带有插件的应用程序。每个插件都应该有自己的设置窗口(QDialog 类型)。

如果插件的设置表单包含在主项目中,我将简单地创建它,并将主表单作为父表单传递,如下所述:http: //developer.qt.nokia.com/doc/qt-4.8/qdialog.html#QDialog(并在此问题的 Google 结果中)。

但是当 QDialog 在单独的插件中声明时,我认为将主表单作为父应用程序从主应用程序传递给插件实例是丑陋和不安全的。

有任何想法吗?存根 QWidget?

4

2 回答 2

1

我有个小主意。这是不同的方法,但它也可能适用于您的情况。据我了解,您正在尝试为您的应用程序创建设置管理器。QSettings例如,您可以使用并将每个插件的设置存储在不同的子组中。例如,您有一个主应用设置和两个其他插件。

[Main App]
key1=val1
key2=val2

[Plugin1]
key1=val1
key2=val2

[Plugin1]
key1=val1
key2=val2

这样您就可以轻松地QDialog在您的主应用程序中构建一个并更改/保存设置。反过来,主应用程序通过信号通知插件设置已更改并且需要重新加载。这样你就可以从你的插件中封装你的主应用程序。

更新

感谢您的快速反馈。我提出的方法是以 MainApplication 为中心,但可以重新设计为去中心化。由于QSettings特定于应用程序,您的插件可以像以前一样将其设置存储在与主应用程序的一个配置中。我要做的一项修改如下。您可以在插件中创建一个QDialog并修改设置,而无需主应用程序了解此过程。

于 2012-02-05T17:15:35.417 回答
0

好的,我只是按照前面的建议创建存根 QWidget:

QWidget *a = new QWidget();
settingsForm = new OpenFolderSettings(a);
...
delete settingsForm;
delete a;

所以现在对话框不会在任务栏上显示按钮。此外,不会出现新窗口。

于 2012-02-19T09:12:29.347 回答