Я хочу отправить QSqlQueryModel другому клиенту с QDatastream и QTcpSocket. Я хочу удалить несколько строк и добавить несколько дополнительных строк в QSqlQueryModel (без изменения базы данных) и отправить его клиенту, как этот псевдокод: -
QTcpSocket socket;
socket.setSocketDescriptor(handle);
socket.waitForReadyRead(WAIT_TIME);
QByteArray req = socket->readAll();
QDataStream reqstream(&req,QIODevice::ReadOnly);
QSqlQueryModel MyModel;
....
// fetch data with MyModel
// add/remove some rows from that model without adding/removing them from actual database
....
QByteArray res;
QDataStream resstream(&res,QIODevice::WriteOnly);
resstrem << MyModel;
socket.write(res);
Как я могу добиться этого без создания новой глубокой копии модели. На стороне клиента он должен получать только модель с данными, чтобы я мог показать ее в QML.
QSqlQueryModel
данные (item) находятся в индексах. Каждый индекс имеет строку и столбец. Вы не можете получить каждый индекс без цикла. Вам понадобится карта сборки или что-то еще для отправки копии вашей модели. Вы можете наследоваться отQSqlQueryModel
и перегрузить методdata()
для построения карты для отправки, но я думаю, что все, что вы можете сделать с этим. Самый простой способ сделать это — написатьQSqlQuery
. - person someoneinthebox   schedule 10.02.2020