phptrash: Уже неплохо. Теперь открыли вы редактор и собираетесь писать код. Приведите последовательность действий (возможно что-то нужно сделать до того, как вы начнёте писать код?). Код не нужен, просто что вы будите делать, как и в какой последовательности. Предположим, что как получить список файлов и как удалить какой-то файл вы на данный момент не знаете.
Всё что можно сделать с QHash есть тут: doc.qt.io/qt-5/qhash.html
Учитывая специфику работы контейнера, просто так взять и поменять ключ и значение местами нельзя. Можно имея значение получить по нему ключ, но за линейное время, а не за почти констатное.
Pavel K: Эм... Поиск по ключу структуре из двух полей (допустим int и string) потребует знания об обоих полях. Т.е. вы в любом случае не сможете зная только значение поле int, но не зная string, найти что-то в хэш-таблице с составным ключом.
find_if и есть прямой перебор. Сложность у алгоритма линейная. Но, задумайтесь, является ли именно это место узким. Важна ли вам производительность именно в этом месте. Вполне вероятно, что обычного find_if по вектору (важно что по вектору, я имею ввиду приимущества кеш-линии) будет достаточно. Ещё учтите, что индекс пересоздаётся не часто.
Pavel K: Если вы сделаете свой класс ключа, то вам скорее всего придётся сделать и свою функцию хеширования.
Модель должна общаться с внешним миром через индексы. Например у вьюхи есть какие-то выделенные индексы, вы с ними что-то можете сделать в модели (допустим удалить). Поиск тоже осуществляется по индексу. Иными словами, ничего снаружи не должно знать о внутренним представлении модели. Иначе могут получиться страшные костыли.
Для поиска по коллекции с разными критериями можно попробовать find_if с предикатом.
Григорий Дикий: ... а в чём разница и чем и почему лучше/хуже каждый способ там не сказано? ;) Попробуйте копнуть в этом направлении, много нового узнаете.
HaruAtari: Не искал, или плохо искал т.к. мне по первому же запросу страниц 10 профильных вакансий нашлось. Переезжать не обязтаельно (хотя, на мой взгляд и лучше по многим критериям), есть вакансии на удалённую работу. Но сейчас не в этом суть. Автору надо ознакомиться с проектами (направлениями разработки) где нужны C++ программисты. Вот пусть и знакомится.
Григорий Дикий: Например Stroka... это что такое? String, MySuperString вот хорошие имена)
Про стили гуглите camel case и snake case. Это конечно не много, ну для ознакомления хватит.
sitev_ru: Нет, вы серьезно хотите что-то разрабатывать на Qt, не умея даже читать документацию и пользоваться гуглом? Освойте сначала эти два навыка. У Qt прекрасная документация (там есть и про установку), а ответы на большую часть вопросов начинающих программистов уже есть в интернете, на Stack Overflow, например... Но достаточно просто вбить их в гугл.
Adamos: Я с вами полностью согласен. Сам пользуюсь Qt Creator. Перечислил три IDE которые более-менее на слуху. Всякие CodeBlocks, Geany, KDevelop даже писать не стал... хотя возможно и зря.
Сергей Протько: Я к тому, что в любом случае, это только рекомендации или проверенные "лучшие практики". Их можно использовать, не использовать, комбинировать, модифицировать и пр. Но не стоит всё под них подгонять и делить на "канонично"/"не канонично".
Да это верно по вполне понятным причинам. Но кто будет так делать?
Вот так сработает, к примеру: connect (static_cast(barObj), SIGNAL(signal1())...
Я не скажу, что это хорошее решение т.к. всё оторвано от контекста. Сам бы я так делать не стал т.к. если приходится такое писать, то это означает плохую архитектуру. А если наследников много, то это вообще фейл...
Хотя, можно встроить еще один промежуточный QObject или с метасистемой поработать. Но чего гадать-то, если нет задачи, условий и контекста. Автору вопроса вот что советую почитать: qt-project.org/doc/qt-4.8/moc.html .