Поиск:

Ответ в темуСоздание новой темы Создание опроса
> qt события 
V
    Опции темы
revanatar
Дата 16.5.2012, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



isEmpty_1()  - работает
Вопрос не по теме: каким макаром и куда можно БЫСТРО выводить текст на форму посимвольно. Такие вещи как insertPlainText("") и аналогичные начинают тормозить программу, если обращаться к ним в цикле.
PM MAIL   Вверх
_GRIN_
Дата 16.5.2012, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



Цитата(revanatar @  16.5.2012,  14:56 Найти цитируемый пост)
Почему так? В смысле зачем туда const QString & ? 

Потому что сигналы-слоты - это по сути обвязка над "указателями на функции", которая разруливается moc-препроцессором.
Читай про механиз сигналов-слотов тут: http://qt-project.org/doc/qt-4.8/signalsandslots.html

Цитата(borisbn @  16.5.2012,  14:37 Найти цитируемый пост)

а isEmpty_1() описать так
void newForm::isEmpty_1( const QString & )

как показывает практика - к слоту без параметров свободно коннектятся сигналы с любыми параметрами (и любым их количеством).





Это сообщение отредактировал(а) _GRIN_ - 17.5.2012, 08:12


--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
Sality123
Дата 17.5.2012, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 10.3.2011

Репутация: нет
Всего: нет



Цитата(revanatar @ 16.5.2012,  17:04)

Вопрос не по теме: каким макаром и куда можно БЫСТРО выводить текст на форму посимвольно. Такие вещи как insertPlainText("") и аналогичные начинают тормозить программу, если обращаться к ним в цикле.

Ну можно 
1) доставать данные ui->plineText->text()
2) прибавляем символ string.append("d")
3) пихаем результат опять в плайнтекст  ui->plineText->setText(string)


непомню точно, может есть функция проще у плайнтекста типо ui->plineText->append("s")

Ах да, любой цикл будет тормозить программу, если он долго обрабатывает команды. Не думаю что insertPlainText("") настолько тугой. Скорее всего в твоем цикле либо очень много  задач что он неуспевает их отработать быстро без видимого зависания програмы.

Это сообщение отредактировал(а) Sality123 - 17.5.2012, 14:25
PM MAIL   Вверх
bsa
Дата 17.5.2012, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Цитата(revanatar @  16.5.2012,  18:04 Найти цитируемый пост)
Вопрос не по теме: каким макаром и куда можно БЫСТРО выводить текст на форму посимвольно. Такие вещи как insertPlainText("") и аналогичные начинают тормозить программу, если обращаться к ним в цикле. 

смотри, если ты откуда-то читаешь посимвольно, и тут же каждый символ пихаешь в виджет, то будет тормозить. Так как производится еще обработка текста и куча дополнительных операций. Лучше добавлять каждый символ во временную текстовую переменную, а когда все символы будут обработаны, то ее содержимое добавить к тексту виджета. Это значительно ускорит работу программы.
PM   Вверх
revanatar
Дата 17.5.2012, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Цитата(bsa @ 17.5.2012,  15:24)
Цитата(revanatar @  16.5.2012,  18:04 Найти цитируемый пост)
Вопрос не по теме: каким макаром и куда можно БЫСТРО выводить текст на форму посимвольно. Такие вещи как insertPlainText("") и аналогичные начинают тормозить программу, если обращаться к ним в цикле. 

смотри, если ты откуда-то читаешь посимвольно, и тут же каждый символ пихаешь в виджет, то будет тормозить. Так как производится еще обработка текста и куча дополнительных операций. Лучше добавлять каждый символ во временную текстовую переменную, а когда все символы будут обработаны, то ее содержимое добавить к тексту виджета. Это значительно ускорит работу программы.

Да, ускорит, но у меня случай  когда я не знаю длинны текста, и зачастую он большой, максимальное количество символов спокойно может переполнить uint. Я так понимаю что ничего быстрей нету? Тогда выводить в файл только остается.
PM MAIL   Вверх
math64
Дата 18.5.2012, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Делай ограничения по числу символов (например, после накопления 80 символов буфер выводится на экран), времени (по прошествии 5 сек буфер выводится на экран), терминальных символов (при получении перевода строки буфер выводится на экран).
PM   Вверх
revanatar
Дата 18.5.2012, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Цитата(math64 @ 18.5.2012,  07:15)
Делай ограничения по числу символов (например, после накопления 80 символов буфер выводится на экран), времени (по прошествии 5 сек буфер выводится на экран), терминальных символов (при получении перевода строки буфер выводится на экран).

Да просто нету гарантий что текст "влезет".
PM MAIL   Вверх
math64
Дата 18.5.2012, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Цитата(revanatar @  18.5.2012,  11:23 Найти цитируемый пост)
Да просто нету гарантий что текст "влезет". 

Ну, если размер текста не влезает с оперативку - обычный текстовый редактор не пойдёт.
Возможно, удобнее складывать не в простой файл, а в базу данных, а выводить в QLisTView с QSqlTableModel (хотя возможно, придётся свою модель написать).
Но для записив БД придётся точно также делить на куски.
PM   Вверх
revanatar
Дата 18.5.2012, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Цитата(math64 @ 18.5.2012,  16:55)
Цитата(revanatar @  18.5.2012,  11:23 Найти цитируемый пост)
Да просто нету гарантий что текст "влезет". 

Ну, если размер текста не влезает с оперативку - обычный текстовый редактор не пойдёт.
Возможно, удобнее складывать не в простой файл, а в базу данных, а выводить в QLisTView с QSqlTableModel (хотя возможно, придётся свою модель написать).
Но для записив БД придётся точно также делить на куски.

Не в оперативке дело, а например в textBrowser, длинна текста которого возвращается в int.
PM MAIL   Вверх
bsa
Дата 18.5.2012, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



revanatar, ну и? Тебе указанный инструментарий в принципе не подходит (если честно, подобное количество текста в принципе человеком сложно воспринимается). Или меняй задачу или ищи другой инструментарий.
PM   Вверх
math64
Дата 18.5.2012, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Цитата(revanatar @  18.5.2012,  18:00 Найти цитируемый пост)
Не в оперативке дело, а например в textBrowser, длинна текста которого возвращается в int. 

int - 32 разрядное число. Если длина в него не влезает, массив, как правило, не влезет в оперативку. Если это не 64-разрядный компьютер с не менее чем 4GB памяти, причём операционка такую память  может предоставить приложению пользователя.
PM   Вверх
revanatar
  Дата 19.5.2012, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Цитата(math64 @ 18.5.2012,  22:54)
Цитата(revanatar @  18.5.2012,  18:00 Найти цитируемый пост)
Не в оперативке дело, а например в textBrowser, длинна текста которого возвращается в int. 

int - 32 разрядное число. Если длина в него не влезает, массив, как правило, не влезет в оперативку. Если это не 64-разрядный компьютер с не менее чем 4GB памяти, причём операционка такую память  может предоставить приложению пользователя.

А, я забыл что int меняет свой размер smile , извиняюсь, все влезет.
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0605 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.