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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 124
  • Облачные технологии14 081
  • QA вакансии3 459
  • Backend вакансии2 116
  • Инженер данных1 804
  • Продакт-менеджер1 264

Разработка

  • Android1 866
  • iOS1 701
  • Fullstack вакансии988
  • AI вакансии952
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 662
  • Java6 548
  • Node.js2 019
  • .NET1 722
  • Kotlin1 619
  • Rust1 454
  • C#711
  • PHP683
  • C++571

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

  • Kubernetes7 766
  • DevOps вакансии6 053
  • Linux-инфраструктура5 491
  • Terraform / IaC4 262
  • CI/CD3 242
  • Мониторинг и Observability1 787
  • SRE567
  • Кибербезопасность453

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

  • Data Scientist1 140
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

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

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

По регионам

  • Вакансии в США44 297
  • Вакансии в Европе23 854
  • Вакансии в Канаде4 476
  • Работа в России3 921

По формату

  • Удалённые вакансии75 046
  • Релокация в США44 297
  • Гибридная работа12 398
  • Офисная работа7 076

По уровню

  • Senior вакансии42 676
  • Middle вакансии20 894
  • Junior вакансии6 725

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

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

Что такое Qt widgets и чем они отличаются от компонентов QML/Qt Quick?

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

Qt Widgets — C++-объекты с нативным рендерингом через QPainter/QStyle, подходят для desktop-форм. QML-компоненты — декларативные .qml-файлы с GPU-рендерингом через Scene Graph, реактивными биндингами и встроенными анимациями.

Qt Widgets

Qt Widgets — классический C++-API для создания настольных GUI. Виджеты (QPushButton, QLabel, QTableView и ~150 других) — это объекты C++, напрямую управляющие отрисовкой через QPainter и нативные платформенные стили (QStyle). Макет задаётся через QHBoxLayout, QGridLayout и т.д.

// Widgets: всё в C++
QPushButton *btn = new QPushButton("Нажми меня", this);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(btn);
connect(btn, &QPushButton::clicked, this, &MyWindow::onClicked);

QML-компоненты (Qt Quick)

QML — декларативный язык разметки (JSON-подобный синтаксис + JavaScript). Компоненты описывают что отображать и как анимировать, а не как рисовать. Рендеринг через Qt Quick Scene Graph (OpenGL/Vulkan/Metal/Software). Каждый файл .qml — повторно используемый компонент.

// Button.qml
import QtQuick 2.15
import QtQuick.Controls 2.15

Button {
    id: root
    text: "Нажми меня"
    width: 120; height: 40
    background: Rectangle {
        color: root.pressed ? "#0057b8" : "#005fcc"
        radius: 6
    }
    onClicked: console.log("clicked")
}

Ключевые отличия

  • Язык: Widgets — C++; QML — декларативный QML + JS.
  • Рендеринг: Widgets — через QPainter/QStyle (нативный вид ОС); QML — через Scene Graph (GPU, аппаратное ускорение).
  • Анимации: В Widgets — ручной код или QPropertyAnimation; в QML — встроенный Behavior on, Transition, SequentialAnimation.
  • Применимость: Widgets — сложные desktop-формы, таблицы, MDI-приложения; QML — мобильные приложения, встроенные системы, кастомный дизайн.
  • Привязки данных: В QML — реактивные биндинги (width: parent.width / 2); в Widgets — сигналы/слоты вручную.
  • Переиспользование: Компонент QML = файл .qml, инстанцируется через имя файла; виджет = C++-класс.

Когда что выбирать

  • Widgets: нужны нативный вид ОС, сложные таблицы (QTableView + model/view), экосистема Qt Designer.
  • QML: кастомный дизайн, плавные анимации, мобильная / embedded-платформа, командная работа дизайнер + разработчик.

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

  • Смешивать Widgets и QML в одном окне сложнее: QQuickWidget добавляет накладные расходы и ограничения (нет прозрачности по умолчанию).
  • QML-компоненты не получают нативный стиль ОС автоматически — нужен QQuickStyle::setStyle("Material") или собственный стиль.
  • В QML биндинги легко сломать присваиванием: width = 100 (JS) разрывает декларативный биндинг width: parent.width.
  • Виджеты не поддерживают GPU-анимации так же плавно — при высоких требованиях к FPS QML предпочтительнее.
  • В QML нет встроенной QTableView-подобной виртуализации для очень больших списков без ListView + cacheBuffer.
  • Файлы .qml компилируются в байт-код при qt_add_qml_module — забыв добавить файл в CMake, получите runtime-ошибку вместо ошибки компиляции.
  • Widgets-приложения не масштабируются на HiDPI автоматически до Qt 5.6+ — нужен AA_EnableHighDpiScaling.
  • QML-компоненты — не C++-классы; нельзя напрямую вызвать метод без Q_INVOKABLE или сигнала.

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

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

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

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

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

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

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

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

Источники

  • https://doc.qt.io/qt-6/qtwidgets-index.html
  • https://doc.qt.io/qt-6/qtquick-index.html
←Предыдущий вопросВ чём разница между Qt Widgets и Qt Quick (QML)?Следующий вопрос→Как развернуть Qt-приложение на Windows, macOS и Linux?

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

Qtobject-lifetimeperformance-debuggingui-architecture