girona español descargar bonn qt data-binding

qt - español - qgis girona



Qt equivalente de enlace de datos.NET? (3)

Bueno, para combobox específicamente, puede establecer un modelo. En general, para QObjects puede usar la señal de notificación para propiedades para conectarse u otras señales no relacionadas con la propiedad. Creo que hay otra forma de hacerlo pero no puedo recordar.

¿Hay un equivalente de enlace de datos de .NET en Qt?

Quiero rellenar algunos cuadros combinados y otros widgets con QStrings que se refieren a entidades específicas en mi base de datos. Sin embargo, sería más limpio si pudiera vincular los datos a estas cadenas en lugar de consultar la base de datos nuevamente a partir de una nueva selección de cuadro combinado o algún otro esquema basado en la creación de mi propio índice de entidades que se buscaría con las QStrings.

Lo mejor que he encontrado es derivar estas entidades de QString y empujarlas en los widgets de esta manera, pero todavía tengo que intentarlo. No estoy seguro de si funcionará como quiero, y parece un truco desagradable.

Si no hay enlace de datos, ¿qué sugieres?

Gracias.


Una forma es usar Qt Model / View Classes (con base en QAbstractItemModel), pero necesitan que su widget herede QAbstractItemView (esto es widgets como QTableView, etc.).
Si desea asignar el modelo Qt a un conjunto de widgets, que no tienen nada en común con QAbstractItemView, puede usar QDataWidgetMapper, que asigna un widget separado a los índices Qt Model / View. Pero de todos modos, como dijo Aaron Digulla, debes escribir un código de placa de caldera ...


Como el usuario indiferente mencionado en un comentario, puede utilizar la clase QDataWidgetMapper . Esta es una forma bastante sencilla de vincular widgets arbitrarios a datos almacenados en un QAbstractItemModel .

El ejemplo en la página enlazada muestra en unas pocas líneas de código, cómo puede vincular su modelo de datos a los widgets de entrada usados ​​comunes:

QDataWidgetMapper *mapper = new QDataWidgetMapper; mapper->setModel(model); mapper->addMapping(mySpinBox, 0); mapper->addMapping(myLineEdit, 1); mapper->addMapping(myCountryChooser, 2); mapper->toFirst();