![]() |
|
![]() ![]() ![]() |
|
KL7 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
понятно... и если нужна полноценная поддержка чего-то наподобие скинов, то надо читать в сторону стилей? подумаем... не хотелось бы разводить много тем, так что еще спрошу: покажите, где почитать про private-классы (например, QLabel активно взаимодействует с QLabelPrivate), которые нередко в Qt используются... хоть какую-то информацию о том, каково предназначение и как использовать ету технологию... она ведь наверняка как-то обоснована... |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Стайлшиты реализуются через QStyleSheetStyle. Только его почему-то решили сделать недокументированным.. Но тем не менее - это один из стилей. Ну, по сути классический с++-ный паттерн PImpl. Преимущество в отсутствии необходимости вынесения деталей в хидер. Ведь даже при изменении прайват данных класса мы должны перекомпилировать всё, что использует этот класс (всмысле использует класс, а не используется классом). Выделение же отдельного внутреннего класса + указатель на объект этого класса в хидере позволяет этого избежать. Другими словами - это общепринятый костыль ![]() |
|||
|
||||
KL7 |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
во-первых, спасибо за информацию =) почитал, стало гораздо понятнее... пытался применить в данном проекте, но пока и без новых паттернов проблем хватает, но в будущем буду знакомится с такими вещами... а теперь... мой виджет... функциональность реализована примерно на 80% =) Т.е. он уже почти умеет все, что должен... но качество реализации не важное... ![]() собственно код... main.cpp
typingarea.h
typingarea.cpp
1. Буду благодарен за любую критику (как в сторону реализации, так и в сторону грамотности кода). Только не в слишком грубой форме. 2. Проблема анимации... В светлом будущем, в которое мы с Вами идет, етот виджет станет основной частью клавиатурного тренажера. Причины две: мне нужна интересная задача, чтобы набраться опыта, и мне нужен тернажер моей мечты с плавной прокруткой строки и другими моментами. Поетому ето должен быть хороший продуманный виджет, который не будет сильно нагружать железо. Но как оказалось все не так-то просто Анимацию я реализовал как сумел. Етот код у меня на староватом компе вроде как работает, но как только я меняю величину шрифта с 35 на 55, то все начинает жутко виснуть. Размер шрифта должен лишь зумировать виджет, а скорость отклика должна сохранится.... Но виджет начинает реагировать гораздо хуже и буковки ползут раз в пять медленее... Хотелось бы решить ету проблему, так что нужен совет и пояснение, что же тут не так... Заранее приношу большие извинения за отсутствие каких-либо комментариев. И буду искренне благодарен, если Вы (абстрактный программист) не заленитесь почитать етот быть может не слишком достойный код... PS как заставить eclipse по Ctrl+Tab мирно ходить по всем вкладкам, а не только по двум последним? ![]() |
||||||
|
|||||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
На самом деле хотелось бы больше скриншотов и аттач с исходниками. На форуме не удобно изучать код. Тут, я так понимаю, приносится в жертву кроссплатформенность библиотеки. В чем необходимость наследования от QFrame, если рамку можно нарисовать самому? Возможно это лишнее. Более базового таймера чем QObject::startTimer() и QObject::timerEvent() еще не придумали. Не знаю как остальные программисты, но я предпочитаю подобные методы оставлять в хедерах с ключевым словом inline.
Надо проанализировать профайлером. Возможно косяк в коде. Может быть готовую картинку можно закэшировать и всего-лишь двигать по виджету. |
||||
|
|||||
KL7 |
|
||||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
завтра исправлюсь...
Что имеется ввиду? В принципе это значение по умолчанию временно и оно будет пересмотрено =)
Рамка и рисуется самостоятельно, т.е. через drawPrimitive, а наследование осталось из-за первоначальных задумок. Надо заменить на QWidget
Примерно представляю, что такое профайлер, но если не трудно - задайте направление, где почитать. Кэширование, думаю, возможно, но над етим надо поработать. Несколько вариантов более простой оптимизации уже придумал. А ошибка в коде очень вероятно... Пару дней назад я в paintEvent вызывал унаследованный от QFrame метод drawFrame - виджет перерисовывался без остановки и все сильно висло. Потратил не мало времени, пока разобрался. |
||||||||||||
|
|||||||||||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Шрифт.
gprof |
|||
|
||||
KL7 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
это я понял... Вы хотели сказать, что Comic Sans есть далеко не на всех платформах или что? почитал... в принципе разобрался... Но судя по тому, что я нашел, для работы с qt и gprof необходимо все библиотеки пересобрать в статик с параметром -pg. Если сам не смогу решить проблему, то все же пересоберу. Кое-какие корректировки в коде сделал. Лучше работать пока не стало. ![]() ------ edited ----- только что договорился с gprof, буду изучать... а наибольшие временные затраты идут на drawText... чем больше (по размерам!) текст, тем труднее приходится процессору... я оптимизировал код, но все равно на большом размере шрифта подтормаживает... буду думать Это сообщение отредактировал(а) KL7 - 10.8.2009, 13:48 |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Подскажите как получить значение текста из QTextEdit
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
DK2, ты чего ? Задаёшь вопрос в чужой теме, в которой уже почти 2 года не было обновлений
![]() ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
темой ошибся.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |