Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
Есть таблица QTableWidget, в которую выводятся несколько десятков тысяч записей. Чтобы программа не подвисала, вывожу записи по тысяче. Далее, при пролистывании таблицы до конца, автоматически добавляются данные следующими способами: 1. при нажатии pageDown 2. при нажатии стрелки вниз 3. при прокрутке вертикального ScrollBar'a. Добавление данных в 1-м и 2-м случаях делаю через обработчик событий: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Для кнопок у ScrollBar, который появляется в TableWidget, я не нашёл никаких событий и поэтому использую сигналы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Разносить одну и ту же функцию добавления записей на несколько других мне не хочется. Есть ли события QEvent для обработки сигнала от ScrollBar? Есть ли action для обработки действий при отпускании слайдера? Можно ли реализовать задачу другим способом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 15:00 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
ObsessМожно ли реализовать задачу другим способом? Добавлять записи непрерывно в фоновом потоке. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 15:25 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovObsessМожно ли реализовать задачу другим способом? Добавлять записи непрерывно в фоновом потоке. Куда вообще вы все хотите что-то добавлять? На самом деле всё проще -- надо реализовать свою модель. (и исползовать TableView, а не TableWidget, естественно). Там всё будет в твоих руках, всё управление данными. И не будет тратиться лишняя память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 17:14 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
MasterZivКуда вообще вы все хотите что-то добавлять? В локальный кэш, разумеется, поскольку на серверных курсорах далеко не уедешь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 18:36 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДобавлять записи непрерывно в фоновом потоке. Пробовал, это не подойдёт. Если сделать фоновый поток, то приложение зависать не будет, но таблица будет пустой, пока происходит добавление. Следовательно, будет непонятно: приложение зависло или выполняет запрос, выводит на экран? А если во время вывода в таблицу запустить ProgressBar, то последний замирает. При использовании вместе с ProgressBar Код: plaintext 1. добавление происходит очень медленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 23:54 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
ObsessЕсли сделать фоновый поток, то приложение зависать не будет, но таблица будет пустой, пока происходит добавление. Это проблема в том коде, которым ты добавляешь. Если лень её фиксить, первую сотню записей можешь добавить в главном потоке, остаток отдать в фоновый. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 00:26 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
Привет. Во первых. Нужно унаследоваться от QAbstractItemModel. Во вторых. Наследоватяся от QTableView и переопределять свой ScrollBar Убиваешь 3 зайцев: Ты всегда контролируешь данные. Вот эта статья думаю тебе поможет http://qtcoder.blogspot.ru/2012/07/qsqlquerymodel-10000.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 08:43 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
И небольшой совет. Всегда использую свои модели наследованные от QAbtsractModel. Будет меньше головной боли потом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 08:45 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
MasterZivКуда вообще вы все хотите что-то добавлять? На самом деле всё проще -- надо реализовать свою модель. (и исползовать TableView, а не TableWidget, естественно). Там всё будет в твоих руках, всё управление данными. И не будет тратиться лишняя память. Добавляю записи в таблицу следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Попробую использовать TableView. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 09:40 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
WulffПривет. Во первых. Нужно унаследоваться от QAbstractItemModel. Во вторых. Наследоватяся от QTableView и переопределять свой ScrollBar Убиваешь 3 зайцев: Ты всегда контролируешь данные. Вот эта статья думаю тебе поможет http://qtcoder.blogspot.ru/2012/07/qsqlquerymodel-10000.html Спасибо за статью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 09:43 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
Да не зачто, учите матчасть. Использование QTableWidget не кашерно для большого объема данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 09:54 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
Obsess... Во вторых. Наследоватяся от QTableView и переопределять свой ScrollBar Это совсем не обязательно, на сколько я понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 13:18 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
Не обязательно, по большому счету. Можно в QLayout сделать QTableView и QScrollBar, и тогда не надо наследоватся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 14:50 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
ObsessА если во время вывода в таблицу запустить ProgressBar, то последний замирает. При использовании вместе с ProgressBar Код: plaintext 1. добавление происходит очень медленно.Если ProgressBar тормозит программу - ты вызываешь слишком часто. ProgressBar лучше работает вместе с таймером. При старте долгого процесса создаешь PB, замеряешь сколько сейчас времени (момент Х), начинаешь крутить в цикле свой долгий процесс. На каждой итерации процесса двигаешь ползунок в PB, и замеряешь сколько сейчас времени. Если между "сейчас" и Х прошло пол(треть)-секунды, то запускаешь processEvents() и ставишь Х на "сейчас". Некоторое торможение конечно останется, но оно будет совершенно незаметным. И GUI будет живым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 18:52 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
White OwlObsessА если во время вывода в таблицу запустить ProgressBar, то последний замирает. При использовании вместе с ProgressBar Код: plaintext 1. добавление происходит очень медленно.Если ProgressBar тормозит программу - ты вызываешь слишком часто. ProgressBar лучше работает вместе с таймером. При старте долгого процесса создаешь PB, замеряешь сколько сейчас времени (момент Х), начинаешь крутить в цикле свой долгий процесс. На каждой итерации процесса двигаешь ползунок в PB, и замеряешь сколько сейчас времени. Если между "сейчас" и Х прошло пол(треть)-секунды, то запускаешь processEvents() и ставишь Х на "сейчас". Некоторое торможение конечно останется, но оно будет совершенно незаметным. И GUI будет живым. Это идея хорошая. Но я ни разу не сталкивался с такими тормозами. А по большому счету, человеку жэто не нужно, т.к. он пытается добавлять данные в QWidget ориентированную таблицу, что всегда пахнет жуткими тормозами. Для большого объема данный нужно юзять QAbstractItemModel. И не будет никаких тормозов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 08:25 |
|
||
|
Обработка событий в Qt при добавлении
|
|||
|---|---|---|---|
|
#18+
Можно ли реализовать задачу другим способом? Contiguous Cache ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 11:00 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38408527&tid=2019948]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 269ms |

| 0 / 0 |
