Servidor Modelo-Vista
Desarrollo de un sencillo programa servidor que muestra y realiza cambios en un QTreeView que se pone a disposición en una red de Objetos Remotos.
Esta es la aplicación del lado del servidor que acompaña al Cliente Model-View.
QRemoteObjectRegistryHost node(QUrl(QStringLiteral("local:registry")));
Comenzamos creando un QRemoteObjectRegistryHost con el que otros Objetos Remotos se conectarán, se registrarán y luego serán anunciados por. El modelo que creamos puede entonces adquirirse fácilmente desde el lado del cliente con sólo conectarse al registro.
std::unique_ptr<QStandardItemModel> sourceModel = createModel(); QList<int> roles; roles << Qt::DisplayRole << Qt::BackgroundRole;
Ahora tenemos que crear el modelo que necesitamos. La implementación exacta está disponible en el código fuente, al que puedes acceder pulsando el enlace más abajo en esta página. También definimos qué roles queremos exponer a la Réplica en el lado del cliente.
QRemoteObjectHost node2(QUrl(QStringLiteral("local:replica")), QUrl(QStringLiteral("local:registry"))); node2.enableRemoting(sourceModel.get(), QStringLiteral("RemoteModel"), roles);
Aquí, creamos el QRemoteObjectHost que se conecta a, y comparte todos sus Objetos Remotos con, el Registro que creamos anteriormente. A continuación, empezamos a remotar el modelo que acabamos de crear con el nombre RemoteModel. También pasamos el argumento roles aquí.
QTreeView view; view.setWindowTitle(QStringLiteral("SourceView")); view.setModel(sourceModel.get()); view.show();
A continuación mostramos el modelo con un widget QTreeView.
TimerHandler handler;
handler.model = sourceModel.get();
QTimer::singleShot(5000, &handler, &TimerHandler::changeData);
QTimer::singleShot(10000, &handler, &TimerHandler::insertData);
QTimer::singleShot(11000, &handler, &TimerHandler::changeFlags);
QTimer::singleShot(12000, &handler, &TimerHandler::removeData);
QTimer::singleShot(13000, &handler, &TimerHandler::moveData);Para que el ejemplo sea ligero, realiza algunas acciones automáticas que afectan al modelo poco después de que se inicie la aplicación del servidor. Estos cambios pueden verse tanto en el servidor como en el cliente. También puedes cambiar el texto de los campos en el lado del servidor y ver cómo se actualiza en el lado del cliente.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.