Ruslan Polupan
Ruslan Polupan19. Juli 2019 06:24

IMpos-Projekt. Teil 004. Spracheinstellungen der Anwendung, QTranslator. Erstellen eines Login-Dialogs zum System

Spracheinstellungen der Anwendung, QTranslator.

Um Steuerelemente in der Sprache des Gebietsschemas korrekt anzuzeigen und die mehrsprachige Benutzeroberfläche zu unterstützen, muss die Anwendung angeben, welche Sprachdatei verwendet wird.
Fügen Sie dazu den folgenden Code zu main.cpp hinzu:

#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  

Benutzerregistrierung der Anwendung

Abhängig von der Einstellung 1000 rufen wir vor dem Start des Hauptprogrammfensters den Anwendungsbenutzerregistrierungsdialog auf.


Das Fenster sieht folgendermaßen aus:

Hinzufügen neuer Dateien zu unserem Projekt. Rechte Maustaste auf den Projektnamen. Wählen Sie Neu hinzufügen...

Wählen Sie die Vorlage Qt Designer-Formularklasse aus

Wählen Sie ein Vorlagenformular Dialog ohne Schaltflächen

Geben Sie den Namen der Klasse und den Pfad zu ihren Dateien an.

Letzter Schritt.

Es wurde die Headerdatei der Klasse logindialog.h erstellt, die Quelldatei logindialog.cpp und die Formulardatei logindialog.ui, die sich im Formulareditor öffnete.

In vielen Artikeln auf verschiedenen Websites stieß ich auf den Satz „Erstelle eine Schnittstelle in Designer, lass es Designer geben, und wir werden es im Code tun“, und in den Beispielen, die mit Qt geliefert werden, wird die Schnittstelle im Programmcode erstellt .
Als ich ihn zum ersten Mal traf, verbrachte ich mehrere Tage damit, seine Fähigkeiten zu studieren, und entschied mich für die Tatsache, dass ich ihn maximal nutzen würde. Warum von Hand tun, was die Umgebung automatisch macht.
Wir fügen dem Formular die notwendigen Steuerelemente hinzu und geben den Objekten aussagekräftige Namen.

Das Objekt labelLogo enthält ein Bild, damit es angezeigt werden kann, müssen Sie eine Ressourcendatei erstellen und dort ein Bild hinzufügen.
Gehen Sie zur Registerkarte Editor und fügen Sie eine neue Datei hinzu. Wählen Sie Qt-Ressourcendatei aus.

Geben Sie den Namen und den Pfad zur Datei an.

Ergebnis:

Erstellen Sie im Verzeichnis mit dem Projekt einen Ordner Image und legen Sie dort die Datei users.png ab. Klicken Sie im Projektverzeichnis mit der rechten Maustaste auf die Datei resource.qrc , wählen Sie Vorhandene Dateien hinzufügen und wählen Sie die Bilddatei aus. Wir erhalten Folgendes:

Öffnen Sie das Formular logindialog.ui, wählen Sie das Objekt labelLogo aus und suchen Sie nach der Eigenschaft pixmap.

Drücken Sie die Taste ... und wählen Sie ein Bild aus.

Drücken Sie Strg+J (Größe anpassen)

Wählen Sie das LabelTitle-Objekt aus, wählen Sie die Eigenschaft styleSheet aus, fügen Sie eine Schriftart hinzu, stellen Sie Fett und die Größe 14 ein

Farbe hinzufügen, Farbe auswählen, blaue Farbe auswählen. Wir erhalten folgendes Stylesheet:

Aktivieren Sie nun die wordWarp-Eigenschaft und ändern Sie die Ausrichtung

Drücken Sie erneut Strg+J und ändern Sie die Größe des Objekts.

Wir wählen das comboBoxUser-Objekt aus und fügen die bearbeitbare Eigenschaft ein, um bei der Eingabe über die Tastatur nach dem Benutzernamen zu suchen.

Als nächstes alles außer Bild und Titel auswählen, Strg + L (Rechte Maustaste Layout, Layout vertikal)
Ändern Sie in den Eigenschaften des resultierenden Layot die layoutStretch wie folgt:

Daher setzen wir das labelInfo-Objekt auf die maximale Größe.

Wählen Sie die gesamte Form aus, rechte Maustaste, Layout, Layout zu Raster (oder die Schaltfläche in der Symbolleiste).
Wählen Sie labelLogo und ändern Sie die vertikale Ausrichtung in AlignTop.

Drücken Sie Alt+Shift+R und testen Sie das Verhalten des Dialogs.

Für die Erstellung des Dialogs wurden nicht mehr als 5 Minuten aufgewendet, und nach jeder Änderung können Sie sehen, wie das Formular im Arbeitsprozess aussehen wird. Deshalb bevorzuge ich Qt Designer.

Projektarchiv
iMposCh004.zip iMposCh004.zip

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

IscanderChe
  • 19. Juli 2019 06:37

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

Evgenii Legotckoi
  • 19. Juli 2019 06:47
  • (bearbeitet)

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

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

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

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

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

Evgenii Legotckoi
  • 19. Juli 2019 06:48

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

IscanderChe
  • 19. Juli 2019 07:31

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

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken