кажется, что всякий раз, когда я пытаюсь "сохранить" диалоговое окно qt в статической переменной, происходит сбой программы. (С ошибкой отладки, сообщающей, что QPaintDevice не может быть создан до QMainApplication).
Поскольку эта ошибка произошла до того, как был введен основной цикл, я понял, что проблема заключалась в статических переменных. (Ну, и это было единственное, что я добавил со времени последней сборки).
Позвольте мне сначала попытаться объяснить, как я его использую. В основном у меня есть дерево (происхождение от некоторых внешних -xml- файлов). Я хочу отобразить данные из этого дерева. Однако в зависимости от фактического места в дереве данные должны отображаться по-разному. (Использование совершенно разных диалогов).
Итак, я начал создавать статическую карту. Эта карта содержит в качестве ключа дерево «location» («regexified» к чему-то вроде «a * c d» - пробелы обозначают разветвление). И в качестве значения следует указать правильный диалог.
Первой идеей было просто использовать указатели на диалоговые окна. (И тогда функция, которая ищет переменную, просто выполняет диалоговое окно). Однако это привело к ошибке, показанной выше.
Теперь я начал использовать промежуточную прокси-функцию, где функция просто создает диалоговое окно и вызывает его. И статическая карта просто содержит указатель на эту функцию. Что-то вроде:
int AskGUIFn::GenStd(const GMProject::pTree& tOut, const GMProject::pTree& tIn) const {
std::unique_ptr<MW::GenStd> box(new MW::GenStd(&tOut, &tIn));
return box->exec();
}
Однако это кажется очень многословным (мне нужно не только создать все модальные окна, но и добавить еще одну прокси-функцию для каждого диалогового экрана). Есть ли более чистый способ сделать это? Я хотел бы запретить использование прокси-функций?