| Родител: Architecture Overview | Documentation Index |
| Съседни подсистеми: Applications | Plugins |
Framework подсистемата предоставя основните building blocks за приложения и плъгини.
src/frame_work/
├── CMakeLists.txt
├── base/src/
│ ├── platform/ # Platform abstraction
│ │ ├── ShutdownHandler.h
│ │ ├── UnixShutdownHandler.{h,cpp}
│ │ └── WindowsShutdownHandler.{h,cpp}
│ │
│ ├── process/ # Process management
│ │ ├── QProcessManager.{h,cpp}
│ │ └── Process descriptors
│ │
│ ├── QPluginManager.cpp # Plugin loading system
│ ├── QPluginInterface.cpp # Plugin interface
│ ├── QPluginListView.{h,cpp} # Plugin UI
│ └── ...
│
├── icons/ # Framework resources
└── framework_resources.qrc
Управление на външни процеси:
Platform-independent graceful shutdown:
Plugin система:
Общ преглед на plugin системата има в plugins/README.md.
Този subsystem е основният API слой, върху който стъпват приложенията и plugin-ите. Детайлните описания са в отделните документи, а тук е краткият practically useful обзор.
ProcessEvent при start/stop на процеситеsetupProcessEnvironment() за custom environmentonAllProcessesFinished() за поведение при приключване на всички процесиТипични entry points:
StartProcess(...)KillAll()GetProcessDescriptor(...)StdinShutdownHandler за quit / exit команди от терминалshutdownRequested()QPluginInterface и GUI слоя QPluginManagerGuiТипичен usage flow:
QPluginManager manager;
manager.addSearchPath("plugins/Daqster");
manager.loadAll();
QPluginManager - global plugin registryApplicationsManager)QProcessManager::setupProcessEnvironment() - virtual hookShutdownHandler::handleShutdown() - platform-specificQPluginLoadercd src/frame_work
mkdir build && cd build
cmake ..
make
Framework се билдва като library (libframe_work.so или .dll).
#include "QProcessManager.h"
#include "ShutdownHandler.h"
class MyApp : public Daqster::QProcessManager {
Q_OBJECT
public:
MyApp() {
// Install shutdown handler
auto handler = Daqster::ShutdownHandler::create();
connect(handler, &ShutdownHandler::shutdownRequested,
this, &MyApp::gracefulShutdown);
handler->install();
}
protected:
void setupProcessEnvironment(QProcess* proc,
const QString& name,
const QStringList& args) override {
// Custom environment setup
QProcessManager::setupProcessEnvironment(proc, name, args);
proc->setEnvironment({"MY_VAR=value"});
}
};
errorOccurred())Виж src/plugins/tests/ за unit tests на framework компонентите.