Serveur Model-View
Développement d'un programme serveur simple qui affiche et modifie un QTreeView mis à disposition sur un réseau d'objets distants.
Il s'agit de l'application côté serveur qui accompagne le client Model-View.
QRemoteObjectRegistryHost node(QUrl(QStringLiteral("local:registry")));
Nous commençons par créer un site QRemoteObjectRegistryHost auquel d'autres objets distants se connecteront, s'enregistreront et seront ensuite annoncés. Le modèle que nous créons peut alors être facilement acquis du côté client en se connectant simplement au registre.
std::unique_ptr<QStandardItemModel> sourceModel = createModel(); QList<int> roles; roles << Qt::DisplayRole << Qt::BackgroundRole;
Nous devons maintenant créer le modèle dont nous avons besoin. L'implémentation exacte est disponible dans le code source, auquel vous pouvez accéder en cliquant sur le lien plus bas sur cette page. Nous définissons également les rôles que nous voulons exposer à la réplique du côté client.
QRemoteObjectHost node2(QUrl(QStringLiteral("local:replica")), QUrl(QStringLiteral("local:registry"))); node2.enableRemoting(sourceModel.get(), QStringLiteral("RemoteModel"), roles);
Ici, nous créons le site QRemoteObjectHost qui se connecte et partage tous ses objets distants avec le registre que nous avons créé plus tôt. Nous démarrons ensuite le remoting du modèle que nous venons de créer avec le nom RemoteModel. Nous passons également l'argument roles ici.
QTreeView view; view.setWindowTitle(QStringLiteral("SourceView")); view.setModel(sourceModel.get()); view.show();
Nous affichons ensuite le modèle avec 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);Pour que l'exemple reste léger, il effectue quelques actions automatisées pour affecter le modèle peu après le lancement de l'application serveur. Ces changements sont visibles à la fois du côté serveur et du côté client. Vous pouvez également modifier le texte des champs sur le serveur et le voir mis à jour sur le client.
© 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.