Название: QTableWidget setData нет данных Отправлено: mike16 от Март 16, 2015, 11:05 Всем привет! Не могу понять как вывести данные QvariantMap в QTableWidget.
Вот код Код: void MainWindow::updateTable(QVariantMap values) Ошибок при компиляции нет, но и данных нет тоже. В qDebug() данные приходят. Пробовал Код: item->setData(Qt::UserRole, values["data1"].toString()); Код: item->setText(values["data1"].toString()); Название: Re: QTableWidget setData нет данных Отправлено: Fregloin от Март 16, 2015, 11:24 Советую прочитать про модели в Qt. Это намного облегчит вам жизнь.
Название: Re: QTableWidget setData нет данных Отправлено: gil9red от Март 16, 2015, 11:26 Плюсую к комментарию Fregloin :)
mike16, А в values вы добавляет элементы? :) Попробуй в той функции вывести содержимое словаря: Код
Название: Re: QTableWidget setData нет данных Отправлено: Bepec от Март 16, 2015, 11:32 Парень, чтобы вывести данные на экран, тебе надо просто поменять роль.
Qt::UserRole подразумевает, что ты будешь извлекать данные оттуда сам. Qt::DisplayRole отобразит данные. Название: Re: QTableWidget setData нет данных Отправлено: mike16 от Март 16, 2015, 11:39 Без модели никак?
Данные делаю так: Код: QVariantList data1; сделал Qt::DisplayRole - ни але... Название: Re: QTableWidget setData нет данных Отправлено: mike16 от Март 16, 2015, 11:49 Может это из-за того, что в документации написано void QTableWidgetItem::setData(int role, const QVariant & value) , а я пытаюсь QVariantMap затолкать?
Название: Re: QTableWidget setData нет данных Отправлено: Bepec от Март 16, 2015, 11:52 Если ты хочешь чтобы оно отобразилось, укажи формат, а не кидай QVariant.
item->setData(Qt::DisplayRole, values["data1"].toStringList()); Ты я так понимаю хочешь отобразить список QVariant'ов - тебе придётся самому привести этот список к читаемому и отображаемому виду. update: ты туда пытаешься запихнуть QVariantList. А нужно QVariant. QVariant может быть QVariantList'ом, но вот привести к отображаемому виду его должен ты. И вообще скажи что ты хочешь сделать. Не "хочу мапу вариантов запихнуть в итем", а "хочу вывести список строк". Название: Re: QTableWidget setData нет данных Отправлено: mike16 от Март 16, 2015, 12:29 Вот так приходят данные
Код: QVariantList sens_temp; Мне надо эти данные вывести во 2-й и 3-й столбцы таблицы, соответственно. Получаю я эти данные тут: Код: void MainWindow::updateTable(QVariantMap values) Название: Re: QTableWidget setData нет данных Отправлено: mike16 от Март 16, 2015, 13:24 Работает вот так
Код: foreach (QVariant s, values["sens_temp"].toList()) Тему пока не закрываю, походу может ещё пару вопросов появиться по этой теме... Название: Re: QTableWidget setData нет данных Отправлено: mike16 от Март 17, 2015, 13:36 Допилил немного код, он выполняет все, что нужно. Но все равно думаю, что можно лучше сделать.
Код: void MainWindow::updateTable(QVariantMap values) Вот что приходит: Код: QMap(("sens_humm", QVariant(QVariantList, (QVariant(int, 19) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 1) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) ) ) ) ( "sens_temp" , QVariant(QVariantList, (QVariant(int, 25) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) , QVariant(int, 240) ) ) ) ) Название: Re: QTableWidget setData нет данных Отправлено: gil9red от Март 17, 2015, 13:39 А зачем в обоих циклах при каждой итерации выполнять ui->tableWidget->setRowCount(sizeof(s));?
Название: Re: QTableWidget setData нет данных Отправлено: mike16 от Март 17, 2015, 13:42 Забыл убрать, просто скопипастил во второй цикл. Уберу.
|