Я только что прочитал о QWidgets, и я хотел бы создать плагины, которые являются виджетами, которые будут загружаться во время выполнения. Когда я смотрел на пример кода и требования, плагин, похоже, унаследовал от интерфейса и QObject. Как бы я создал плагины QWidget, в которых все они имеют разные кнопки и разные слоты? Кроме того, можно ли создать плагин, который наследует от интерфейса, и базовый класс, который наследует от QWidget (который наследует от QObject).
http://developer.qt.nokia.com/doc/qt-4.8/plugins-howto.html
Однако я читал о метаобъекте, где вы можете загружать виджеты во время выполнения, просто зная их имена (не требует поддержки RTTI). Но как именно я доставил бы классы в образец, чтобы он узнал их? При работе с плагинами мне нужно иметь их в специальном проекте, который я собираю с различными наборами флагов в файле .pro. Но как бы я сделал это здесь?
Я бы очень хотел использовать qtplugin, но как?
Идея:
Было бы приемлемо и оптимально позволить плагину создать QWidget, который он возвращает? Не вижу смысла писать плагины для дизайнера, если я создаю свой интерфейс без него. Или я неправильно понял?
http://techbase.kde.org/Development/Tutorials/Writing_Qt_Designer_Plugins
class workspaceInterface {
virtual QWidget* createWorkspace(QWidget* parent);
... other useful functions...
}
class mySpecialWidget : public QWidget {
mySpecialWidget {
add a layout, add some buttons, maybe change the color
}
}
//plugin
#include "myspecialwidget.h"
class myPlugin : public QObject, public workspaceInterface {
QWidget* createWorkspace(QWidget* parent) {
return new MySpecialWidget();
}
....
}
Весь этот код я бы поместил в один проект, скомпилировал его как плагин, а затем искал его в моем основном приложении и загрузил его. Я бы создал его экземпляр и позволил ему создать виджет, который я буду дисплей.
Есть ли лучший способ сделать это, или это так?