- 1. Projektstruktur
- 2. QMLLineEdit.pro
- 3. main.cpp
- 4. main.qml
- 5. Ergebnis
Ähnliche Artikel sind in Qt/C++ und PyQt5/Python verfügbar.
Vor einer kompletten Lektion zu Qt zum Thema IP-Adressvalidierung werde ich die Artikel auch um eine Version in Qt / QML ergänzen.
Es wird auch ein Dateneingabefeld geben, in das wir die IP-Adresse eintragen. RegExpValidator wird zur Validierung verwendet. Ein unangenehmer Moment ist in diesem Fall, dass das Einfügen mehrerer String-Variablen in einen bestimmten RegExpValidator eine ziemlich nicht triviale Aufgabe ist, daher beschränken wir uns darauf, sofort eine reguläre Zeile in die regExp -Eigenschaft dieses Objekts zu schreiben .
Projektstruktur
Das Projekt besteht aus folgenden Dateien:
- QMLLineEdit.pro - Projektprofil
- main.cpp - Quelldatei des Projekts starten
- qml.qrc - Ressourcendatei
- main.qml - Hauptstartdatei qml
QMLLineEdit.pro
QT += qml quick CONFIG += c++11 SOURCES += main.cpp RESOURCES += qml.qrc # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
main.cpp
#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { // Обращаю ваше внимание на этот атрибут. // Он включает масштабирование для устройств с высоким разрешением, // то есть в Qt5.7 уже не нужно пересчитывать пиксели в dpi QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QLatin1String("qrc:/main.qml"))); return app.exec(); }
main.qml
Es gibt hier sehr wenig Code, sogar weniger als für Qt / C ++ und PyQt5 / Python, daher gebe ich nur ein Beispiel ohne Kommentare und alles sollte klar sein.
import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.0 ApplicationWindow { visible: true width: 480 height: 120 title: qsTr("QML Text Field IP Address") RowLayout { anchors.fill: parent anchors.margins: 10 Label { text: "Введите IP-адрес" } TextField { validator: RegExpValidator { regExp: /^((?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.){0,3}(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$/ } } } }
Ergebnis
Als Ergebnis können wir eine IP-Adresse und nur eine IP-Adresse eingeben.
Не запскается проект. Только начал изучать QML, ранее работали программы.
Нужно специально как то устанавливать Qt под Android?
Я не мог допстить ошибку - скачивал проект с сайта.
В чем может быть проблема?
Возможно проблема в версиях. Какие ошибки выдаёт?
В принципе можете скопипастить содержимое main.qml в свой новый созданный проект. Это должно быть достаточно.
И, да , для Андроида необходимо устанавливать соотвествующие NDK и SDK , они есть на сайте Android Studio .
Спасибо. Сейчас все поставлю, попробую заново.
Ошибка не помню какая, я уже переустанавливаю Qt.