Ruslan Polupan
Ruslan Polupan19 липня 2019 р. 06:24

Проект iMpos. Частина 004. Мовні установки програми, QTranslator. Створення діалогу входу до системи

Мовні установки програми, QTranslator.

Для коректного відображення елементів керування мовою локалі, а також підтримки мультимовності інтерфейсу додатку необхідно вказати який мовний файл використовуватиме.
Для цього до main.cpp додаємо наступний код:

#ifndef QT_NO_TRANSLATION
    //Определяем имя языкового файла в зависимости от текущей локали
    QString translatorFileName = QLatin1String("qt_");
    translatorFileName += QLocale::system().name();
    //Создаем и пытаемся загрузить 
    QTranslator *translator = new QTranslator(&a);
    if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
        a.installTranslator(translator);
    else
        qWarning(logWarning()) << "Не удалось загрузить языковый файл.";
#endif  

Реєстрація користувача програми

Діалог реєстрації користувача програми будемо викликати в залежності від налаштування 1000 перед запуском основного вікна програми.


Вікно матиме такий вигляд:

Додаємо нові файли до нашого проекту. Права кнопка миші на назві проекту. Вибираємо Додати новий...

Вибираємо шаблон Клас форми Qt Designer

Виберіть шаблон форми Діалог без кнопок

Вказуємо ім'я класу та шлях до його файлів.

Підсумковий крок.

Створився заголовний файл класу logindialog.h файл вихідного коду logindialog.cpp і файл форми logindialog.ui який відкрився в редакторі форм.

У багатьох статтях на різних сайтах я зустрічав фразу "створювати інтерфейс в Designer нехай будуть дизайнери, а ми робитимемо це в коді", та й у прикладах інтерфейс, що йдуть з Qt, створюється в коді програми.
Я при першому знайомстві з ним витратив кілька днів на вивчення його можливостей і зупинився на тому, що по максимуму використовуватиму його. Навіщо робити руками те, що середовище робить автоматично.
Додаємо необхідні елементи управління на форму та даємо осмислені імена об'єктам.

Об'єкт labelLogo міститиме малюнок, щоб він відображався необхідно створити файл ресурсів і додати туди зображення.
Переходимо у вкладку Редактор і додаємо новий файл. Вибираємо Файл ресурсів Qt .

Вказуємо ім'я та шлях до файлу.

Підсумок:

У каталозі з проектом створюємо папку Image та розміщуємо туди файл users.png . У каталозі проекту правою кнопкою на файлі resource.qrc , вибираємо Додати існуючі файли , вибираємо файл із зображенням. Отримуємо таке:

Відкриваємо форму logindialog.ui вибираємо об'єкт labelLogo шукаємо властивість pixmap.

Натискаємо кнопку … та вибираємо зображення.

Натискаємо Ctrl+J (Наздогнати розмір)

Вибираємо об'єкт labelTitle вибираємо властивість styleSheet, Додаємо шрифт, встановлюємо Bold та розмір 14

Додаємо колір, вибираємо color, вибираю синій колір. Отримуємо наступну таблицю стилів:

Тепер включаємо властивість WordWarp і змінюємо allignment

Знову Ctrl+J та змінюємо розмір об'єкта.

Вибираємо об'єкт comboBoxUser і включаємо властивість editable для того, щоб здійснювався пошук імені користувача при введенні з клавіатури.

Далі вибираємо все крім зображення та заголовка, Ctrl + L (права кнопка миші компонування, скомпонувати по вертикалі)
У властивості вийшов Layot змінюємо layoutStretch ось так :

Таким чином, ми встановлюємо об'єкту labelInfo максимальний розмір.

Виділяємо всю форму, права кнопка миші, Компонування, Компонувати по сітці (або кнопка на панелі інструментів).
Вибираємо labelLogo змінюємо вертикальне вирівнювання AlignTop.

Натискаємо Alt+Shift+R та тестуємо поведінку діалогу.

Чистого часу для створення діалогу витрачено не більше 5 хвилин, причому після кожної зміни можна переглядати як буде виглядати форма в процесі роботи. За це я і віддаю перевагу Qt Designer.

Архів проекту
iMposCh004.zip iMposCh004.zip

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

IscanderChe
  • 19 липня 2019 р. 06:37

Был бы там ещё QSplitter - цены бы не было Qt Designer. :) Мне он как раз на моём проекте понадобился. Так что теперь челлендж по формам через код.

Evgenii Legotckoi
  • 19 липня 2019 р. 06:47
  • (відредаговано)

Согласен насчет того, что Qt Designer очень удобная вещь.

Многие програмисты говорят о том, что якобы мы не дизайнеры и пользоваться Qt дизайнером не будем. Вот только это абсолютно однобокое мнение тех, которые пишут кучу "бесполезного" кода для вёрстки, а полезный код, который выполняет конкретную работу, порой просто теряется в куче созданий и инициализаций Объектов Вёрстки. Я не хочу смотреть на вёрстку в коде диалогового окна, я хочу видеть то, что это окно делает, не кучу new QLabel() , которые создаются и не меняются в течение всего жизненного цикла диалога.

Например в нашем проекте генерированный через Qt Designer код главного окна приложения занимает 16000 строк кода, это без полезной работы этого окна. И смотреть на это не нужно и не хочется, ибо это лишнее, смотреть тот код, который и так сгенерирован рабочим и там не будет пропущен какой-нибудь parent, что нельзя сказать с уверенностью, если это будет писать программист.

Также они абсолютно кладут болт на работу переводчиков. Поскольку Qt Linguist позволяет при переводе просматривать готовый диалог ui формы, и переводчику будет удобнее сделать качественный перевод видя контекст окна приложения, чем непонятные строчки кода, где это всё написано.

Так что выводы можно сделать довольно однозначные.

Evgenii Legotckoi
  • 19 липня 2019 р. 06:48

На самом деле QSplitter есть, только немного по хитрому он там ставится. Вот статья по QSplitter

IscanderChe
  • 19 липня 2019 р. 07:31

Ага, попробовал. Удобно. Спасибо!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 08:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 08:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
i
innorwall15 листопада 2024 р. 03:03
Qt/C++ - Урок 060. Налаштування зовнішнього вигляду програми під час виконання I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
i
innorwall14 листопада 2024 р. 19:42
Як скопіювати файли в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
i
innorwall14 листопада 2024 р. 17:09
Qt/C++ - Підручник 068. Hello World за допомогою системи збирання CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
i
innorwall14 листопада 2024 р. 12:05
EVILEG-CORE. Використання Google reCAPTCHA 2001; 98 29 34 priligy buy
Тепер обговоріть на форумі
i
innorwall14 листопада 2024 р. 11:39
добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
i
innorwall11 листопада 2024 р. 18:55
Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
9
9Anonim25 жовтня 2024 р. 16:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Игорь Максимов03 жовтня 2024 р. 11:05
Реализация навигации по разделам Спасибо Евгений!

Слідкуйте за нами в соціальних мережах