![]() |
|
|
![]()
|
|
| revanatar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
isEmpty_1() - работает
Вопрос не по теме: каким макаром и куда можно БЫСТРО выводить текст на форму посимвольно. Такие вещи как insertPlainText("") и аналогичные начинают тормозить программу, если обращаться к ним в цикле. |
|||
|
||||
| _GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
Потому что сигналы-слоты - это по сути обвязка над "указателями на функции", которая разруливается moc-препроцессором. Читай про механиз сигналов-слотов тут: http://qt-project.org/doc/qt-4.8/signalsandslots.html
как показывает практика - к слоту без параметров свободно коннектятся сигналы с любыми параметрами (и любым их количеством). Это сообщение отредактировал(а) _GRIN_ - 17.5.2012, 08:12 -------------------- Дорогу осилит идущий |
|||
|
||||
| Sality123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.3.2011 Репутация: нет Всего: нет |
Ну можно 1) доставать данные ui->plineText->text() 2) прибавляем символ string.append("d") 3) пихаем результат опять в плайнтекст ui->plineText->setText(string) непомню точно, может есть функция проще у плайнтекста типо ui->plineText->append("s") Ах да, любой цикл будет тормозить программу, если он долго обрабатывает команды. Не думаю что insertPlainText("") настолько тугой. Скорее всего в твоем цикле либо очень много задач что он неуспевает их отработать быстро без видимого зависания програмы. Это сообщение отредактировал(а) Sality123 - 17.5.2012, 14:25 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
смотри, если ты откуда-то читаешь посимвольно, и тут же каждый символ пихаешь в виджет, то будет тормозить. Так как производится еще обработка текста и куча дополнительных операций. Лучше добавлять каждый символ во временную текстовую переменную, а когда все символы будут обработаны, то ее содержимое добавить к тексту виджета. Это значительно ускорит работу программы. |
|||
|
||||
| revanatar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
Да, ускорит, но у меня случай когда я не знаю длинны текста, и зачастую он большой, максимальное количество символов спокойно может переполнить uint. Я так понимаю что ничего быстрей нету? Тогда выводить в файл только остается. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Делай ограничения по числу символов (например, после накопления 80 символов буфер выводится на экран), времени (по прошествии 5 сек буфер выводится на экран), терминальных символов (при получении перевода строки буфер выводится на экран).
|
|||
|
||||
| revanatar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
Да просто нету гарантий что текст "влезет". |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Ну, если размер текста не влезает с оперативку - обычный текстовый редактор не пойдёт. Возможно, удобнее складывать не в простой файл, а в базу данных, а выводить в QLisTView с QSqlTableModel (хотя возможно, придётся свою модель написать). Но для записив БД придётся точно также делить на куски. |
|||
|
||||
| revanatar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
Не в оперативке дело, а например в textBrowser, длинна текста которого возвращается в int. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
revanatar, ну и? Тебе указанный инструментарий в принципе не подходит (если честно, подобное количество текста в принципе человеком сложно воспринимается). Или меняй задачу или ищи другой инструментарий.
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
int - 32 разрядное число. Если длина в него не влезает, массив, как правило, не влезет в оперативку. Если это не 64-разрядный компьютер с не менее чем 4GB памяти, причём операционка такую память может предоставить приложению пользователя. |
|||
|
||||
| revanatar |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
А, я забыл что int меняет свой размер |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |