Comments 12
Чем не устроил подход из Color Editor Factory Example?
Так как он для редактирования однородных данных. После вызова QItemEditorFactory::setDefaultFactory(factory); из примера Qt для типа QColor будет создаваться пользовательский редактор, а для всех остальных QLineEdit. В предложенном подходе редакторы будут вызываться в соответствии с первоначальной установкой: для int QSpinBox и т.д.
А нельзя ли скопировать defaultFactory()?
QItemEditorFactory *factory = new QItemEditorFactory(*QItemEditorFactory::defaultFactory())
QItemEditorFactory *factory = new QItemEditorFactory;
QItemEditorCreatorBase *colorListCreator =
new QStandardItemEditorCreator<ColorListEditor>();
factory->registerEditor(QVariant::Color, colorListCreator);
QItemEditorCreatorBase *intEditor =
new QStandardItemEditorCreator<QSpinBox>();
factory->registerEditor(QVariant::Int, intEditor);
QItemEditorFactory::setDefaultFactory(factory);
Да, но как я отметил в посте, тоже самое придется сделать для всех типовых элементов если необходимо оставить возможность их редактирования стандартным образом. Упор был сделан на то, как этого избежать.
Если не хочется каждый раз добавлять
factory->registerEditor(QVariant::Int, intEditor);
и аналогичные вызовы для прочих типов, можно просто отнаследовать QItemEditorFactory и прописать туда эти вызовы в конструктор.Да, конечно, но упор был сделан, на то чтобы этого не делать, т.к — это дублирование кода. Плюс в моем варианте есть возможность расширения — например переключения логики стандарт/пользовательский динамически и т.д., что отсутствует при жесткой регистрации редакторов, т.е. возможность масштабирования.
Так как он для редактирования однородных данных. После вызова QItemEditorFactory::setDefaultFactory(factory); из примера Qt для типа QColor будет создаваться пользовательский редактор, а для всех остальных QLineEdit. В предложенном подходе редакторы будут вызываться в соответствии с первоначальной установкой: для int QSpinBox и т.д.
Промахнулся. Ответил выше
Промахнулся. Ответил выше
Sign up to leave a comment.
Подземелья Qt: Рецепты приготовления монстров (Часть 1. Редактирование разнородных данных)