![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Алексей1153 |
![]()
Сообщение
#1
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
[offtop]
Раскрывающийся текст У меня вот парочка глюпых вопросов возникла Кстати, 1) а зачем вставлять Q_OBJECT, если нет своих слотов и сигналов ? Или это "дёшево" ? 2) зачем используется неуклюжая конструкция #ifndef BUTTON_H #define BUTTON_H #endif , если есть #pragma once ? 3) чем использование QMap лучше std::map ? (привычно для меня как то последнее) отделено от темы: Создание неограниченного количества элементов |
|
|
![]() |
igor_bogomolov |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
1.
Это общая рекомендация тролей. когда слоты понадобятся, не нужно будет вызывать qmake вручную. Что значит "дёшево"? Добавлю только, что Q_OBJECT нужен не только для сигнал-слотового взаимодействия, а везде где может потребоваться метообъектная информация (qobject_cast, tr, property system и т.д.)2. Раз #pragma - значит зависит от компилятора, что не есть хорошо. К тому же конструкцию понимают все, это уже некий стандарт.3. и это аргумент? Qt не входит в STL и смысл его использовать если он делает то же самое что и std::map, получается что QMap бесполезное дублирование std::map(наверное что бы осложнить переход с Qt). Как то вы слишком категоричны. У всего есть свои преимущества и недостатки. Важно их правильно использовать.Для меня главное преимущество QTL, как и всего Qt - это удобство использования. Qt предоставляет удобные интерфейсы, которые значительно сокращают время разработки, снижая требования к исполнителю. К тому же, при написании программы, хочется обеспечить некое единство стиля. Поэтому мне не нравится смешивание в одном коде контейнеров Qt и stl. Поэтому если программа пишется с использованием Qt, я стараюсь использовать QTL. В качестве дополнения видержка из assistent'a Цитата Контейнерные классы - классы с неявным совместным использованием данных, они реентерабельны, и они оптимизированы для быстрой работы, низкого потребления памяти и минимального увеличения кода (inline), результат в меньшем исполняемом файле. Кроме того, они потоко-безопасны в ситуациях, где они используются, как контейнеры только для чтения, всеми потоками используемыми для доступа к ним.
Для обхода элементов, хранящихся в контейнере, вы можете использовать один из двух типов итераторов: итераторы в стиле Java и итераторы в стиле STL. Итераторы в стиле Java легче использовать и они предоставляют высокоуровневую функциональность, тогда как итераторы в стиле STL немного более эффективны и могут быть использованы вместе с базовыми алгоритмами Qt и STL. Qt также предоставляет конструкцию foreach, которая позволяет очень легко перебрать все элементы, хранящиеся в контейнере |
|
|
![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 24.6.2025, 19:26 |