Вызов функций в отдельном потоке |
Здравствуйте, гость ( Вход | Регистрация )
Вызов функций в отдельном потоке |
KuvshinoF |
11.2.2021, 16:42
Сообщение
#1
|
Студент Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: 0 |
По сети в программу приходят некие данные. Они приходят в функцию MainClass::getData(QVector<int> vec1, QStringList list1) и сохраняются в ней. По кнопке_1 класса-индикатора данных MyClass (объект создан в MainClass) в отдельном потоке (из-за большого объема данных, чтобы не подвисал основной gui) должны индицироваться (в таблицу) данные, сосчитанные из vec1, а по кнопке_2 - данные из list1. Подскажите пож-та как это сделать? (что именно вызывать в методе run() отдельного потока и т.д.?)
|
|
|
Алексей1153 |
12.2.2021, 13:54
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
KuvshinoF, тут не нужен дополнительный поток, используй таблицу с моделью
QTableView QAbstractItemModel |
|
|
KuvshinoF |
12.2.2021, 16:42
Сообщение
#3
|
Студент Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: 0 |
Алексей1153: а можно поподробнее хотя бы немного как это в моем случае выглядело бы?
|
|
|
Алексей1153 |
13.2.2021, 7:39
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
KuvshinoF, там по ссылкам есть описание, как это всё работает. Разбирайся )
https://doc.qt.io/qt-5/qabstractitemmodel.html#details Model/View Programming общий принцип : таблица (view) отрисовывает только те ячейки, которые сейчас видны на экране (а их обычно немного, поэтому это происходит быстро, сколько бы данных в массиве ни было). Данные поставляются классом модели. Наследуешься от QAbstractItemModel и выполняешь там манипуляции по доставке нужных в данный момент из массива данных в таблицу Сообщение отредактировал Алексей1153 - 13.2.2021, 7:40 |
|
|
KuvshinoF |
15.2.2021, 17:56
Сообщение
#5
|
Студент Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: 0 |
Создал отдельный класс class MyTableModel: public QAbstractTableModel, переопределил в нем ф-ии rowCount и ColumnCount. Подскажите пож-та как правильно переопределить метод data и главное в какой метод и как передавать данные, например типа QVector<int> vecData для их последующего вывода в QTableView ?
далее делаю
|
|
|
Алексей1153 |
15.2.2021, 20:38
Сообщение
#6
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
KuvshinoF, всё по той же ссылке ) Пример https://doc.qt.io/qt-5/model-view-programmi...eaders-and-data
в какой метод и как передавать данные, например типа QVector<int> в модель нужно передать любым способом ссылку, указатель или даже копию контейнера (но для больших объёмов вряд ли приемлемо передавать копию). В виртуальном методе data для каждой клетки нужно будет возвращать конкретное значение из этого контейнера Сообщение отредактировал Алексей1153 - 15.2.2021, 20:41 |
|
|
KuvshinoF |
16.2.2021, 13:24
Сообщение
#7
|
Студент Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: 0 |
Сделал так
Но ничего не выводится... Подскажите в чем ошибка? Сообщение отредактировал KuvshinoF - 16.2.2021, 13:25 |
|
|
Алексей1153 |
17.2.2021, 8:38
Сообщение
#8
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
KuvshinoF, попробуй так
если не получится, прикрепи проект (всё лишнее вырежи, оставь только то, что нужно для демонстрации) и лучше, конечно, в модели держать ссылку на внешний контейнер. Но это уже следующий шаг - оптимизация. пока разберись с отображением |
|
|
KuvshinoF |
17.2.2021, 21:49
Сообщение
#9
|
Студент Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо, Алексей1153, все сделал - работает. Еще вопросик, на будущее, как сделать вывод вышеуказанного вектора данных, например, в 2 столбца (например первые 10 значений в 1-ый столбец таблицы, следующие 10 значений - во второй столбец таблицы)?
|
|
|
Алексей1153 |
18.2.2021, 8:14
Сообщение
#10
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 18:08 |