Qt的。从插件中调用时,从任务栏隐藏QDialog

时间:2012-02-05 14:21:10

标签: qt plugins qdialog

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

如果主要项目中包含插件的设置表单,我只需将主表单作为父级传递来创建它,如下所示:http://developer.qt.nokia.com/doc/qt-4.8/qdialog.html#QDialog(以及Google搜索此问题的结果)。

但是当QDialog在分离的插件中声明时,我认为将主窗体作为父主体从主应用程序传递到插件实例是丑陋且不安全的。

有什么想法吗? Stub QWidget?

2 个答案:

答案 0 :(得分:1)

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

[Main App]
key1=val1
key2=val2

[Plugin1]
key1=val1
key2=val2

[Plugin1]
key1=val1
key2=val2

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

<强>更新

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

答案 1 :(得分:0)

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

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

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