2012-02-05 6 views
1

Я разрабатываю приложение с плагинами. Каждый плагин должен иметь собственное окно настроек (тип QDialog).Qt. Скрыть QDialog с панели задач, когда вызывается из плагина

Если форма настроек плагина включена в основной проект, я просто создам его с прохождением основной формы в качестве родительской, как указано здесь: http://developer.qt.nokia.com/doc/qt-4.8/qdialog.html#QDialog (и в результатах поиска Google для этой проблемы).

Но когда QDialog объявлен в отдельном плагине, я считаю, что уродливо и небезопасно передавать основную форму в качестве родителя из основного приложения в экземпляр плагина.

Любые идеи? Stub QWidget?

ответ

0

Хорошо, я бы просто создать стаб QWidget, как предполагают, раньше:

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

Так что теперь диалог имеет кнопку не отображаться на панели задач. Кроме того, не появляется новое окно.

1

У меня есть небольшая идея. Это другой подход, но он может работать и в вашем случае. Насколько я понимаю, вы пытаетесь создать диспетчер настроек для своего приложения. Например, вы можете использовать QSettings и сохранить настройки для каждого плагина в другой подгруппе. Например, у вас есть основные настройки приложения и два других плагина.

[Main App] 
key1=val1 
key2=val2 

[Plugin1] 
key1=val1 
key2=val2 

[Plugin1] 
key1=val1 
key2=val2 

Таким образом, вы могли бы легко построить QDialog в главном Appication и изменения/сохранения настроек. В свою очередь основное приложение уведомляет плагины через сигнал о том, что настройки изменились и их необходимо перезагрузить. Таким образом вы инкапсулируете основное приложение из своих плагинов.

обновление

Спасибо за быструю обратную связь. Подход, который я предложил, ориентирован на MainApplication, но его можно перепроектировать для децентрализации. Поскольку QSettings - это приложение, ваши плагины могут сохранять свои настройки в одной конфигурации с основным приложением, как и раньше. Одна из модификаций, которые я бы сделал, это следующее. Вы можете создать QDialog в своем плагине и изменить настройки без необходимости для основного приложения, чтобы знать об этом процессе.

+0

Каждый плагин должен иметь собственное окно настроек. Итак, если основное приложение создаст собственные окна настроек плагина, он должен знать об этом. То есть плагины должны быть включены в основной проект. Это не мое дело. –

+0

Единственная проблема - кнопка панели задач окна settigs. –

+0

@MaximKorobov Не обязательно. Вы можете связать свое приложение с плагинами с традиционным механизмом сигнала/слота, чтобы плагины знали об изменениях. – Neox

Смежные вопросы