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
Был бы там ещё QSplitter - цены бы не было Qt Designer. :) Мне он как раз на моём проекте понадобился. Так что теперь челлендж по формам через код.
Согласен насчет того, что Qt Designer очень удобная вещь.
Многие програмисты говорят о том, что якобы мы не дизайнеры и пользоваться Qt дизайнером не будем. Вот только это абсолютно однобокое мнение тех, которые пишут кучу "бесполезного" кода для вёрстки, а полезный код, который выполняет конкретную работу, порой просто теряется в куче созданий и инициализаций Объектов Вёрстки. Я не хочу смотреть на вёрстку в коде диалогового окна, я хочу видеть то, что это окно делает, не кучу new QLabel() , которые создаются и не меняются в течение всего жизненного цикла диалога.
Например в нашем проекте генерированный через Qt Designer код главного окна приложения занимает 16000 строк кода, это без полезной работы этого окна. И смотреть на это не нужно и не хочется, ибо это лишнее, смотреть тот код, который и так сгенерирован рабочим и там не будет пропущен какой-нибудь parent, что нельзя сказать с уверенностью, если это будет писать программист.
Также они абсолютно кладут болт на работу переводчиков. Поскольку Qt Linguist позволяет при переводе просматривать готовый диалог ui формы, и переводчику будет удобнее сделать качественный перевод видя контекст окна приложения, чем непонятные строчки кода, где это всё написано.
Так что выводы можно сделать довольно однозначные.
На самом деле QSplitter есть, только немного по хитрому он там ставится. Вот статья по QSplitter
Ага, попробовал. Удобно. Спасибо!