Хитрости при работе с Qt
Если вы имеете отношения к субмирку разработчиков приложений, то вы наверняка слышали о некой библиотеке Qt, написанной угрюмыми норвежцами для не менее угрюмых С++ разработчиков . Помимо прелести двойного лицензирования (Qt доступно как под GPL, так и под коммерческой лицензией), кроссплатформености (работает и под Linux, и под Mac, и под Windows), она включает в себя почти все, что надо разработчику приложений — и средства создания пользовательского интерфейса, и функции работы с графикой, сетями, СУБД и XML и т.д. и т.п. Если вам нет дела до всего это великолепия — можете тут же забыть эти две буквы и никогда не посещайте сайт производителя, а ещё лучше — заблокируйте его на уровне корпоративного брандмауэра.
Теперь с нами остались только адепты, спокойно можем продолжать.
1. Представьте ситуацию — вы пишите код в своей любимой IDE. Разумеется, для вас, опытных аскетов, не осталось никаких религиозных взглядов на предмет кодировок, вы просто используете UTF-8 и все шоколадно ровно до поры, пока ваш коллега на инородной ОС не завопит «я не могу прочесть ни одного твоего комментария». Или вам понадобится написать на родном языке текст в объект QLabel.
Собрав собственноручно написанный код… вы увидите крокозябры. Для того, чтобы было все приятно, надо не забыть в теле main() добавить следующую строчку:
1 | QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); |
а в инициализацию окна
1 | QLocale::setDefault(QLocale(QLocale::Russian, QLocale::RussianFederation)); |
Что делать с коллегой — оставлю на ваше усмотрение.
2. Вы заметили, что ваши великолепные вручную написанные компоненты подтормаживают при отрисовки. Все потому, что кэш графики по умолчанию не сильно большой. Данный недостаток решается следующей строчкой:
1 | QPixmapCache::setCacheLimit(32768); |
В дальнейшем мы рассмотрим другие интересные примеры, в том числе никак не связанные с Qt.

