Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 582новые вакансии за сутки·92 562вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 220
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

Аналитика и данные

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

Другие направления

  • Проджект-менеджер611
  • UI/UX дизайн145
  • Ручное тестирование14

По регионам

  • Вакансии в США43 686
  • Вакансии в Европе23 668
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 889
  • Релокация в США43 686
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме QtВсе вопросы
QtJuniorКодинг

Что такое Qt Resource System (файлы qrc) и как её использовать?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Qt Resource System (.qrc) встраивает файлы прямо в бинарник. Доступ происходит через схему qrc:/ или :/ в C++ и QML. В CMake ресурсы подключаются через qt_add_resources() или qt_add_qml_module().

Структура .qrc файла

<!-- resources.qrc -->
<!DOCTYPE RCC>
<RCC version="1.0">
  <qresource prefix="/">
    <file>images/logo.png</file>
    <file alias="main.qml">qml/main.qml</file>
  </qresource>
  <qresource prefix="/fonts">
    <file>fonts/Roboto-Regular.ttf</file>
  </qresource>
</RCC>

Атрибут alias задаёт имя, по которому файл будет доступен в коде — независимо от фактического пути на диске.

Qt Resource System — файлы .qrc

Qt Resource System позволяет встраивать файлы (изображения, QML, шрифты, JSON, звуки и т.д.) прямо в бинарный исполняемый файл или библиотеку. Это избавляет от зависимости от структуры файловой системы на машине пользователя и упрощает дистрибуцию приложения. Доступ к ресурсам осуществляется через URL-схему qrc:/.

Подключение ресурсов в CMake (Qt 6)

qt_add_resources(app "app_resources"
    PREFIX "/"
    FILES
        images/logo.png
        qml/main.qml
        fonts/Roboto-Regular.ttf
)

Или с помощью отдельного .qrc-файла:

qt_add_resources(app resources.qrc)

Подключение в qmake

RESOURCES += resources.qrc

Доступ к ресурсам в C++

#include <QFile>
#include <QImage>
#include <QFontDatabase>
#include <QDebug>

void resourceDemo()
{
    // Чтение текстового файла
    QFile f(":/config/settings.json");  // qrc:/ или :/ — одно и то же
    if (f.open(QIODevice::ReadOnly)) {
        QByteArray data = f.readAll();
        qDebug() << data;
    }

    // Загрузка изображения
    QImage img(":/images/logo.png");
    qDebug() << img.size();

    // Регистрация шрифта
    int id = QFontDatabase::addApplicationFont(":/fonts/Roboto-Regular.ttf");
    QString family = QFontDatabase::applicationFontFamilies(id).at(0);
    QFont font(family, 14);
}

Доступ из QML

import QtQuick 2.15

Image {
    source: "qrc:/images/logo.png"  // или просто ":/images/logo.png"
}

Text {
    font.family: "Roboto"  // шрифт зарегистрирован через C++
    text: "Hello"
}

Динамическая загрузка ресурсов

Ресурсы можно загружать из внешних .rcc-файлов во время выполнения через QResource::registerResource(). Это позволяет реализовать плагинную архитектуру или обновляемые ресурсы без перекомпиляции:

// Сгенерировать: rcc --binary resources.qrc -o resources.rcc
if (!QResource::registerResource("/path/to/resources.rcc")) {
    qWarning() << "Failed to load external resources";
}
// После регистрации: :/ пути работают как обычно
QFile f(":/images/logo.png");

Подводные камни

  • Чувствительность к регистру: в .qrc путь Images/Logo.PNG и в коде :/images/logo.png — разные ресурсы; регистр в путях учитывается на всех платформах, даже на Windows.
  • Большие файлы: ресурсы компилируются в массивы C++, что раздувает исполняемый файл и увеличивает время компиляции; видео и большие наборы данных лучше поставлять отдельно.
  • Инициализация при статической линковке: при статической линковке сторонних Qt-плагинов ресурсы могут не зарегистрироваться автоматически — нужен явный вызов Q_INIT_RESOURCE(resourcename).
  • qt_add_qml_module vs qt_add_resources: QML-файлы лучше добавлять через qt_add_qml_module, а не вручную через qt_add_resources — иначе не будет AOT-компиляции и правильной регистрации модуля.
  • Псевдонимы (alias): если два файла получают одинаковый alias в одном prefix — компилятор ресурсов не выдаст ошибку, но доступен будет только последний.
  • Относительные пути в QML: Image { source: "logo.png" } ищет файл относительно текущего QML-файла; если оба в ресурсах — работает; если QML в ресурсах, а файл на диске — нет.
  • Обновление ресурсов: встроенные ресурсы нельзя обновить без перекомпиляции приложения; для обновляемых ресурсов используйте внешние .rcc-файлы с registerResource().

Частые вопросы на собеседовании

  • Как Qt работает с многопоточностью? Что такое QThread и паттерн worker-object?
  • Как работает управление памятью в Qt?
  • В каких проектах Qt оправдан, а где он становится источником лишней сложности?
  • Что такое иерархия объектов Qt и как работает владение по принципу parent-child?

Типичные ошибки

  • Объяснять Qt Resource System qrc только по синтаксису, без жизненного цикла и стоимости.
  • Игнорировать ошибки, null/empty состояния, порядок инициализации или режим сборки.
  • Давать пример, который работает в демо, но ломается при изменении владельца ресурса.
  • Смешивать signals/slots с generic callbacks и забывать про thread affinity.

Что проверяет интервьюер

  • Кандидат формулирует точную модель для Qt Resource System qrc, а не только определение.
  • Пример компилируем, безопасен по lifetime и соответствует версии технологии.
  • Названы trade-off, ограничения и диагностируемые симптомы ошибки.
  • Понимает границу между C++ кодом, runtime/framework metadata и editor/UI слоем.

Как вы знаете этот вопрос?

Проверить себя по теме Qt →

Источники

  • https://doc.qt.io/qt-6/resources.html

Связанные темы

Qtobject-lifetimeperformance-debuggingui-architecture