W
WXQ23 липня 2018 р. 02:48

Qt Android

Добрый день) Пишу программу под Андроид. У меня есть несколько окон. Окна открывается нормально все работает нет проблем. Проблема заключается в следующем.
Первое окно у меня окно авторизации. При нажатии на кнопки обращаюсь к слоту  и отправляю Логина и пароли в С++. В С++ слое я открываю MySQL БД которая на удаленном сервере (OpenServer, PHPmyAdmin)и в стороне С++ она сравнивает и при соответствии логина .... должна открыть второе окно и в нее отправить еще текст с почтой.  Но она отправляет текст в 1 окно...2 окно открывается но в нее не отправляется текст. Помогите пожалуйста с этим разобраться буду очень благодарен.





dbase.h

#ifndef DBASE_H
#define DBASE_H
#include <QObject>
#include <QDebug>
#include <QGuiApplication>
#include <QQuickView>
#include <QQmlContext>
#include <QDebug>
#include <QtSql>
#include "QtSql/QSqlDatabase"
#include "QSqlQuery"

class DBase: public QObject
{
    Q_OBJECT

    Q_PROPERTY(QString myMail      READ  getSomePropertyMail       WRITE setSomePropertyMail       NOTIFY  sendToMail)     //Для обменна даными о пройденном пути
    Q_PROPERTY(QString myPassword  READ  getSomePropertyPassword   WRITE setSomePropertyPassword   NOTIFY  sendToPassword)     //Для обменна даными о времени записи трека
    Q_PROPERTY(QString myOpen      READ  getSomePropertyOpen       WRITE setSomePropertyOpen       NOTIFY  sendToOpen)     //Для отправки текстового сообщеиня в QML
    Q_PROPERTY(QString passw2      READ  getSomePropertyPassw2     WRITE setSomePropertyPassw2     NOTIFY  sendToPassw2)
    Q_PROPERTY(QString gender      READ  getSomePropertyGender     WRITE setSomePropertyGender     NOTIFY  sendToGender)
    Q_PROPERTY(QString kq          READ  getSomePropertyKq         WRITE setSomePropertyKq         NOTIFY  sendToKq)
    Q_PROPERTY(QString age         READ  getSomePropertyAge        WRITE setSomePropertyAge        NOTIFY  sendToAge)
    Q_PROPERTY(QString name        READ  getSomePropertyName       WRITE setSomePropertyName       NOTIFY  sendToName)
    Q_PROPERTY(QString second      READ  getSomePropertySecond     WRITE setSomePropertySecond     NOTIFY  sendToSecond)
    Q_PROPERTY(QString anketa      READ  getSomePropertyAnketa     WRITE setSomePropertyAnketa     NOTIFY  sendToAnketa)
    Q_PROPERTY(QString email       READ  getSomePropertyEmail      WRITE setSomePropertyEmail      NOTIFY  sendToEmail)

public:
    explicit DBase(QObject *parent = 0);

    QString getSomePropertyEmail()const;
    void setSomePropertyEmail(const QString &);

    QString getSomePropertyAnketa()const;
    void setSomePropertyAnketa(const QString &);                                                  //Для обменна даными о времени t

    QString getSomePropertyOpen()const;
    void setSomePropertyOpen(const QString &);                                                  //Для обменна даными о времени t

    QString getSomePropertyMail()const;                                                         //Для обменна даными о времени t
    void setSomePropertyMail(const QString &);                                                  //Для обменна даными о времени t

    QString getSomePropertyPassword()const;                                                          //Для обменна даными о расстоянии m
    void setSomePropertyPassword(const QString &);                                                   //Для обменна даными о расстоянии m

    QString getSomePropertyPassw2()const;                                                          //Для обменна даными о расстоянии m
    void setSomePropertyPassw2(const QString &);                                                   //Для обменна даными о расстоянии m

    QString getSomePropertyGender()const;                                                          //Для обменна даными о расстоянии m
    void setSomePropertyGender(const QString &);                                                   //Для обменна даными о расстоянии m

    QString getSomePropertyKq()const;                                                          //Для обменна даными о расстоянии m
    void setSomePropertyKq(const QString &);                                                   //Для обменна даными о расстоянии m

    QString getSomePropertyAge()const;                                                          //Для обменна даными о расстоянии m
    void setSomePropertyAge(const QString &);                                                   //Для обменна даными о расстоянии m

    QString getSomePropertyName()const;                                                          //Для обменна даными о расстоянии m
    void setSomePropertyName(const QString &);                                                   //Для обменна даными о расстоянии m

    QString getSomePropertySecond()const;                                                          //Для обменна даными о расстоянии m
    void setSomePropertySecond(const QString &);                                                   //Для обменна даными о расстоянии m

signals:
    //Сигналы для передачи данных о переменной
    void sendToMail(QString);                                                                    //Сигналы для передачи пути
    void sendToPassword(QString);                                                                   //Сигналы для передачи данных о времени
    void sendToOpen(QString);
    void sendToPassw2(QString);
    void sendToGender(QString);
    void sendToKq(QString);
    void sendToAge(QString);
    void sendToName(QString);
    void sendToSecond(QString);
    void sendToAnketa(QString);
    void sendToEmail(QString);


public slots:
    void resive_logpass(QString myMail, QString myPassword);
    void open_users(QString myMail, QString myPassword);
    void open_doctors(QString myMail, QString myPassword);
    void write_users(QString myMail, QString myPassword, QString passw2, QString gender, QString kq, QString age, QString name, QString second );
    void anceta_users(QString anketa);
    void pro_users();
    void open_db();
    void create_sqlite();
    void insert_sqlite();
    void open_sqlite(QString email, QString name);
    void close_sqlite();
    void select_sqlite();
    void delete_sqlite();
    void close_db();
    void message(QString message);



private:
    QSqlDatabase    db;
    QSqlDatabase    dbase;
    QSqlQuery       a_query;
    QSqlQuery       qwe;
    QString myMail;
    QString myPassword;

    QString id;
    QString email;
    QString passw;
    QString passw2;
    QString name;
    QString second;
    QString age;
    QString kq;
    QString gender;
    QString myOpen;
    QString anketa;
    QString data_time;

    Q_INVOKABLE QString myMessage;
protected:
    QString user_mail;
    QString user_name;
};

#endif // DBASE_H

dbase.cpp

#include "dbase.h"

#include <QObject>
#include <QDebug>
#include <QTime>
#include "QtSql/QSqlDatabase"
#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QTime>
#include <QLocale>
#include <QDateTime>
#include <QtMath>
#include "QSqlQuery"
#include <QtSql>

DBase::DBase(QObject *parent): QObject(parent)
{

}

void DBase::setSomePropertyEmail(const QString &i)                                      //Для обменна даными с переменной way
{
    email = i;
    emit sendToAnketa(email);
}

QString DBase::getSomePropertyEmail()const                                              //Для обменна даными с переменной way
{
    return email;
}

void DBase::setSomePropertyAnketa(const QString &i)                                      //Для обменна даными с переменной way
{
    anketa = i;
    emit sendToAnketa(anketa);
}

QString DBase::getSomePropertyAnketa()const                                              //Для обменна даными с переменной way
{
    return anketa;
}

void DBase::setSomePropertyPassw2(const QString &i)                                      //Для обменна даными с переменной way
{
    passw2 = i;
    emit sendToMail(passw2);
}

QString DBase::getSomePropertyPassw2()const                                              //Для обменна даными с переменной way
{
    return passw2;
}

void DBase::setSomePropertyGender(const QString &i)                                      //Для обменна даными с переменной way
{
    gender = i;
    emit sendToMail(gender);
}

QString DBase::getSomePropertyGender()const                                              //Для обменна даными с переменной way
{
    return gender;
}

void DBase::setSomePropertyKq(const QString &i)                                      //Для обменна даными с переменной way
{
    kq = i;
    emit sendToMail(kq);
}

QString DBase::getSomePropertyKq()const                                              //Для обменна даными с переменной way
{
    return kq;
}

void DBase::setSomePropertyAge(const QString &i)                                      //Для обменна даными с переменной way
{
    age = i;
    emit sendToMail(age);
}

QString DBase::getSomePropertyAge()const                                              //Для обменна даными с переменной way
{
    return age;
}

void DBase::setSomePropertyName(const QString &i)                                      //Для обменна даными с переменной way
{
    name = i;
    emit sendToMail(name);
}

QString DBase::getSomePropertyName()const                                              //Для обменна даными с переменной way
{
    return name;
}

void DBase::setSomePropertySecond(const QString &i)                                      //Для обменна даными с переменной way
{
    second = i;
    emit sendToMail(second);
}

QString DBase::getSomePropertySecond()const                                              //Для обменна даными с переменной way
{
    return second;
}

void DBase::setSomePropertyMail(const QString &i)                                      //Для обменна даными с переменной way
{
    myMail = i;
    emit sendToMail(myMail);
}

QString DBase::getSomePropertyMail()const                                              //Для обменна даными с переменной way
{
    return myMail;
}

void DBase::setSomePropertyPassword (const QString &i)                                     //Для обменна даными с переменной time
{
    myPassword = i;
    emit sendToPassword(myPassword);
}

QString DBase::getSomePropertyPassword()const                                             //Для обменна даными с переменной time
{
    return myPassword;
}

void DBase::setSomePropertyOpen (const QString &i)                                     //Для обменна даными с переменной time
{
    myOpen = i;
    emit sendToPassword(myOpen);
}

QString DBase::getSomePropertyOpen()const                                             //Для обменна даными с переменной time
{
    return myOpen;
}

void DBase::open_users(QString myMail, QString myPassword){
    myOpen = "true";
    emit sendToOpen(myOpen);
    /*

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1"); //192.168.1.252
    db.setPort(3306);
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("");
    bool ok = db.open();
    if(ok == true){
    }

    QSqlQuery query(db);
    query.exec("SELECT id, email, password, gender, weight, age, first_name, second_name FROM users;");

    while (query.next())
    {
        id      = query.value(0).toString();
        email   = query.value(1).toString();                                                 //Получаю данные из БД
        passw   = query.value(2).toString();
        kq      = query.value(3).toString();                                                  //Получаю данные из БД
        age     = query.value(4).toString();
        name    = query.value(5).toString();                                                 //Получаю данные из БД
        second = query.value(6).toString();                                              //Получаю данные из БД

        if((myMail==email)&&(myPassword==passw)){
            qDebug()<<"id"<<id<<endl;
            qDebug()<<"email"<<email<<endl;
            qDebug()<<"password"<<passw<<endl;
            qDebug()<<"gender"<<gender<<endl;
            qDebug()<<"weight"<<kq<<endl;
            qDebug()<<"age"<<age<<endl;
            qDebug()<<"name"<<name<<endl;
            qDebug()<<"secname"<<second<<endl;

            myOpen = "true";
            emit sendToOpen(myOpen);
            emit sendToEmail(name);
            emit sendToName(email);

            //emit sendClos();

            // open_sqlite();

            //insert_sqlite();
            break;

        }
        else{
            myOpen = "Не правильные данные";
            sendToOpen(myOpen);
        }
    }
    close_db();
*/
}

void DBase::open_doctors(QString myMail, QString myPassword)
{
    open_db();
    QSqlQuery query(db);
    query.exec("SELECT id, login, password, first_name, second_name FROM doctors;");
    while (query.next())
    {
        id      = query.value(0).toString();
        email   = query.value(1).toString();                                                 //Получаю данные из БД
        passw   = query.value(2).toString();
        name    = query.value(3).toString();                                                 //Получаю данные из БД
        second  = query.value(4).toString();                                              //Получаю данные из БД

        if((myMail==email)&&(myPassword==passw)){
            qDebug()<<"id"<<id<<endl;
            qDebug()<<"email"<<email<<endl;
            qDebug()<<"password"<<passw<<endl;
            qDebug()<<"name"<<name<<endl;
            qDebug()<<"secname"<<second<<endl;
            myOpen = "true";
            sendToOpen(myOpen);

            pro_users();
            break;
        }
        else{

        }
        close_db();
    }
    qDebug()<<"NOT !!!"<<endl;
    myOpen = "false";
    sendToOpen(myOpen);
}

void DBase::write_users(QString myMail, QString myPassword, QString passw2, QString gender, QString kq, QString age, QString name, QString second){

    if((myMail == "")||(myPassword == "")||(gender == "")|| (kq == "") || (age =="") || (name == "") ||(second == "")){
        myOpen = "Заполните все ячейки";
        sendToOpen(myOpen);

    }
    else{
        if(myPassword != passw2){
            myOpen = "Пароль не совпадает";
            sendToOpen(myOpen);
        }
        else{
            open_db();
            QSqlQuery query(db);
            query.exec("SELECT email FROM users;");
            bool test = false;
            while (query.next())
            {
                email = query.value(0).toString();
                qDebug()<<email<<"email"<<endl;
                if(myMail == email){
                    test = true;
                    myOpen = "Пользователь с такой почтой существует.";
                    sendToOpen(myOpen);
                    break;
                }
            }

            if(test == false){
                QString str;
                QSqlQuery a_query;
                a_query.prepare("INSERT INTO users (email, password, gender, weight, age, first_name, second_name)"
                                "VALUES (:email, :password, :gender, :weight, :age, :first_name, :second_name);");
                a_query.bindValue(":email",myMail);
                a_query.bindValue(":password",myPassword);
                a_query.bindValue(":gender",gender);
                a_query.bindValue(":weight",kq);
                a_query.bindValue(":age",age);
                a_query.bindValue(":first_name",name);
                a_query.bindValue(":second_name",second);
                a_query.exec();
                bool b = a_query.exec(str);
                if (!b) {
                    qDebug() << "error3";
                }else{
                    qDebug()<<"Send3";
                }
                myOpen = "Аккаунт создан";
                sendToOpen(myOpen);
            }
        }
    }
    close_db();
}

void DBase::resive_logpass(QString myLogin, QString myPassword)
{
    qDebug()<<myLogin<<"--"<<myPassword<<endl;
}

void DBase::anceta_users(QString anketa){
    qDebug() << anketa <<"anketa"<<endl;
    qDebug() << email   <<"myMail"<<endl;
    qDebug() << name <<"name"<<endl;

    QTime time = QTime::currentTime();
    data_time = time.msecsSinceStartOfDay();
    QString str;
    QSqlQuery a_query(db);
    a_query.prepare("INSERT INTO anket (email, rezult, name, data_time)"
                    "VALUES (:email, :rezult, :name, :data_time);");
    a_query.bindValue(":email",user_mail);
    a_query.bindValue(":rezult",anketa);
    a_query.bindValue(":name",user_name);
    a_query.bindValue(":name",data_time);
    a_query.exec();
    bool b = a_query.exec(str);
    if (!b) {
        qDebug() << "error3";
    }else{
        qDebug()<<"Send3";
    }
    myOpen = "Аккаунта сохранена";
    sendToOpen(myOpen);
}

void DBase::pro_users(){

    emit sendToEmail(email);
    emit sendToName(name);


}

void DBase::open_db()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1"); //192.168.1.252
    db.setPort(3306);
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("");
    bool ok = db.open();
    if(ok == true){
    }
}

void DBase::open_sqlite(QString email, QString name)
{
    dbase = QSqlDatabase::addDatabase("QSQLITE");          //Создая обект для QSQLite
    dbase.setDatabaseName("vasya.sqlite");                             //Создаю БД
    if (!dbase.open()) {                                                //Проверяю БД
        qDebug() << "Error db";
    }else{
        qDebug()<<"Good db";
    }
    ///////////
    QSqlQuery qwe;
    // DDL query
    QString str = "CREATE TABLE azaza ("
                  "id integer PRIMARY KEY NOT NULL,"
                  "mail VARCHAR(30),"
                  "name VARCHAR(30),);";
    bool b = qwe.exec(str);                        //Проверка на создания
    if (!b) {
        qDebug() << "error2!";
    }
    else{
        qDebug()<<"send2";
    }
qDebug() << "error3"<<email<<endl;;
qDebug() << "error3"<<name<<endl;
qwe.prepare("INSERT INTO azaza (mail , name) VALUES (:mail , :name)");
qwe.bindValue(":mail",email);
qwe.bindValue(":name",name);

    b = qwe.exec();
    if (!b) {
        qDebug() << "error3";
    }else{
        qDebug()<<"Send3";
    }
}

void DBase::create_sqlite(){
    // DDL query
}

void DBase::insert_sqlite(){

}

void DBase::close_sqlite(){
    dbase.close();
}

void DBase::delete_sqlite(){
    QString str_insrt = "DELETE FROM test_2.my_ta;";
}

void DBase::select_sqlite(){
    QSqlQuery query(dbase);
    query.exec("SELECT myMaile, name FROM my_ta;");
    while (query.next())
    {
        email   = query.value(0).toString();                                                 //Получаю данные из БД
        name    = query.value(1).toString();                                                 //Получаю данные из БД
    }

}

void DBase::close_db()
{
    db.close();
}


void DBase::message(QString message){
    myOpen = message;
    emit sendToOpen(myOpen);
}
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtQuick>
#include <QApplicationStateChangeEvent>
#include <QObject>
#include <QQmlContext>
#include <QQmlApplicationEngine>
#include <QQuickView>
#include "dbase.h"
#include "QtSql/QSqlDatabase"
#include "QSqlQuery"
#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);
    qmlRegisterType<DBase>("MyModule",1,0,"DBase");
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    QQuickView  view;
    DBase myClass;
    view.rootContext()->setContextProperty("myObject",&myClass);

    if (engine.rootObjects().isEmpty())
        return -1;
    return app.exec();

    /*
    QGuiApplication * q_application = SailfishApp :: application ( argc, argv );
    QQuickView * q_view = SailfishApp :: createView ( );
    qmlRegisterType<GPSCoor>("MyModule",1,0,"GPSCoor");     //Передает класс под названием GPSCorr в QML
    GPSCoor myClass;
    q_view->rootContext()->setContextProperty("myObject",&myClass);
    q_view->setSource ( SailfishApp :: pathTo ( "qml/GPSpy.qml" ));
    q_view -> showFullScreen ( );
    return q_application -> exec ( );
    */
}


main.qml
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Window 2.2
import QtQuick.Layouts 1.3
import QtQuick.Layouts 1.1
import MyModule 1.0

ApplicationWindow {
    id: applicationWindow
    width: 300
    height: 600
    visible: true
    title: qsTr("Med")
    DBase{
        id:dbase_class
        onSendToOpen:{
            var text;
            text = myOpen;
            console.log(myOpen)
            if(text === "true"){
                mymenu.show()
               // applicationWindow.hide()
            }else{
                if(text === "Не правильные данные")
                    label.visible = text
            }
        }

        onSendToEmail:
        {
            label2.text = email
            console.log("email" + email);
        }
        onSendToName:{
            label1.text = name
            console.log("Name = " + name);
        }
    }


    Rectangle{
        id: rectangle2
        anchors.fill: parent
        Rectangle {
            id: rectangle
            width: 253
            height: 233
            radius: 12
            border.width: 2
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.verticalCenter: parent.verticalCenter


            TextField {
                id: my_Login
                height: 40
                text: qsTr("")
                horizontalAlignment: Text.AlignHCenter
                placeholderText: "Почта"
                anchors.top: parent.top
                anchors.topMargin: 15
                anchors.right: parent.right
                anchors.rightMargin: 15
                anchors.left: parent.left
                anchors.leftMargin: 15
            }

            TextField {
                id: my_Password
                height: 40
                text: qsTr("")
                horizontalAlignment: Text.AlignHCenter
                placeholderText: "Пароль"
                anchors.top: my_Login.bottom
                anchors.topMargin: 20
                anchors.right: parent.right
                anchors.left: parent.left
                anchors.leftMargin: 15
                anchors.rightMargin: 15
                echoMode: "Password"
            }

            Button {
                id: button
                height: 40
                text: qsTr("Войти")
                anchors.top: my_Password.bottom
                anchors.topMargin: 15
                anchors.left: parent.horizontalCenter
                anchors.leftMargin: 5
                anchors.right: parent.right
                anchors.rightMargin: 15
                highlighted: true
                visible: true
                onClicked: {
                        console.log("CLICK")
                        dbase_class.open_users(my_Login.text,my_Password.text)
                    }
                }


            Button {
                id: button1
                text: qsTr("Регистрация")
                highlighted: true
                anchors.right: parent.right
                anchors.rightMargin: 15
                anchors.left: parent.left
                anchors.leftMargin: 15
                anchors.top: button.bottom
                anchors.topMargin: 5
                onClicked: {

                    // Закрываем второе окно
                }

            }

            Button {
                id: helper
                text: qsTr("Помощь")
                highlighted: true
                anchors.right: parent.horizontalCenter
                anchors.rightMargin: 5
                anchors.top: my_Password.bottom
                anchors.topMargin: 15
                anchors.left: parent.left
                anchors.leftMargin: 15
                onClicked: {

                    // Закрываем второе окно
                    //  applicationWindow.close()
                }
            }

            Label {
                id: label
                width: 257
                visible: false
                height: 20
                color: "#f60404"
                text: qsTr("Почта или пароль не правильный")
                verticalAlignment: Text.AlignVCenter
                horizontalAlignment: Text.AlignHCenter
                anchors.right: parent.right
                anchors.rightMargin: 15
                anchors.left: parent.left
                anchors.leftMargin: 15
                styleColor: "#000000"
                wrapMode: Text.WordWrap
                anchors.top: my_Login.bottom
                anchors.topMargin: 0
                font.pointSize: 10
            }
        }

        Rectangle {
            id: rectangle1
            y: 498
            height: 40
            color: "#2b2626"
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 0
            anchors.left: parent.left
            anchors.leftMargin: 0
            anchors.right: parent.right
            anchors.rightMargin: 0

            Label {
                id: label1
                y: 16
                color: "#ffffff"
                text: qsTr("Почта")
                anchors.verticalCenter: parent.verticalCenter
                anchors.left: parent.left
                anchors.leftMargin: 20
            }

            Label {
                id: label2
                x: 259
                y: 16
                color: "#ffffff"
                text: qsTr("Имя")
                anchors.verticalCenter: parent.verticalCenter
                anchors.right: parent.right
                anchors.rightMargin: 20
            }
        }
    }

   Mymenu{
       id:mymenu
   }
}


Mymenu.qml

import QtQuick 2.9
import QtQuick.Controls 1.4
import QtQuick.Controls 2.2
import QtQuick.Window 2.2
import QtQuick.Layouts 1.3
import MyModule 1.0

ApplicationWindow {
    id: windowMenu
    width: 300
    height: 600
    DBase{
        id: mymyMenu
        onSendToEmail: {
            mymail.text = email
        }
        onSendToName:{
            myname.text = name
        }
    }

    //color: "red"

    Rectangle {
        id: rectangle
        width: 230
        height: 248
        color: "#ffffff"
        radius: 20

        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter
        border.width: 1
        Button {//анкета
            id: button
            text: qsTr("Анкета")
            highlighted: true
            anchors.right: parent.right
            anchors.rightMargin: 10
            anchors.left: parent.left
            anchors.leftMargin: 10
            anchors.top: parent.top
            anchors.topMargin: 10
            MouseArea{
                anchors.fill: parent
                onClicked: {
                    console.log("CLIK!")

                }
            }

        }
        Button {//Почта
            id: button1
            text: qsTr("Написать врачу")
            highlighted: true
            anchors.right: parent.right
            anchors.rightMargin: 10
            anchors.left: parent.left
            anchors.leftMargin: 10
            anchors.top: button.bottom
            anchors.topMargin: 5
            MouseArea{
                anchors.fill: parent
                onClicked: {
 console.log("CLIK!")
                }
            }

        }
        Button {
            id: button2
            text: qsTr("Найти лекарство")
            highlighted: true
            anchors.right: parent.right
            anchors.rightMargin: 10
            anchors.left: parent.left
            anchors.leftMargin: 10
            anchors.top: button1.bottom
            anchors.topMargin: 5
            MouseArea{
                anchors.fill: parent
                onClicked: {
 console.log("CLIK!")
                }
            }

        }
        Button {
            id: button3
            text: qsTr("График")
            highlighted: true
            anchors.left: parent.left
            anchors.leftMargin: 10
            anchors.right: parent.right
            anchors.rightMargin: 10
            anchors.top: button2.bottom
            anchors.topMargin: 5
            MouseArea{
                anchors.fill: parent
                onClicked: {
                     console.log("CLIK!")
                }
            }

        }

        RoundButton {
            id: roundButton
            x: 113
            text: "Выход"
            highlighted: true
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.top: button3.bottom
            anchors.topMargin: 10
            MouseArea{
                anchors.fill: parent
                onClicked: {
                    console.log("CLIK!")
                }
            }
        }
    }

    Rectangle {
        id: rectangle1
        y: 560
        height: 40
        color: "#292828"
        anchors.bottom: parent.bottom
        anchors.bottomMargin: 0
        anchors.left: parent.left
        anchors.leftMargin: 0
        anchors.right: parent.right
        anchors.rightMargin: 0

        Label {
            id: myname
            x: 581
            y: 12
            color: "#ffffff"
            text: qsTr("Имя")
            anchors.verticalCenter: parent.verticalCenter
            anchors.right: parent.right
            anchors.rightMargin: 15
        }

        Label {
            id: mymail
            y: 16
            color: "#ffffff"
            text: qsTr("Почта")
            anchors.verticalCenter: parent.verticalCenter
            anchors.left: parent.left
            anchors.leftMargin: 15
        }
    }

}
это все, пока что в коде dbase.cpp я отключил БД что бы открывалось у всех и по этому прописал

 myOpen = "true";
    emit sendToOpen(myOpen);
    email="qqqqqq";
    emit sendToEmail(email);
    name="wwwwww";
     emit sendToName(name);


Как видно при запуске Имя и Почта успешно отправляются в 1 окно а на второе нет.










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

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

3
Evgenii Legotckoi
  • 23 липня 2018 р. 03:09

Добрый день!

У вас здесь есть ещё одна проблема, которая будет постоянно портить вам кровь. Если вы ведёте разработку под Андроид, то вам нужно разрабатывать приложение, используя одно окно. Иначе, когда вы запустите на Андроиде, то у вас работать ничего не будет. Андроид не поддерживает несколько окон в одном прилоежнии.
Поэтому ApplicationWindow, должен быть только один. Это что касается архитектурной ошибки.
Что касается непосредственно самой вашей проблемы.
Когда вы принимаете сигнал об имени и пароле, то вам необходимо устанавливать его в оба окна в данном случае, а вы устанавливаете его только в главное окно и ничего не делаете со вторым окном меню
        onSendToEmail:
        {
            label2.text = email
            console.log("email" + email);
        }
        onSendToName:{
            label1.text = name
            console.log("Name = " + name);
        }




Конечно, это наверняка связано с тем, что Вы зарегистрировали модуль базы данных... Но вы в каждом окне создаёте по одному экземпляру подключения к базе данных. Получается, что у вас в рамках приложения создаётся три инстанса... То, что вы регистрируете в main функции и по одному в каждом окне. И не понятно, что именно работает и что высылает сигналы.
Используйте то, что вы зарегистрировали в main функции.

Connections {
    target: myObject

        onSendToEmail:
        {
            label2.text = email
            console.log("email" + email);
        }
        onSendToName:{
            label1.text = name
            console.log("Name = " + name);
        }
}
    W
    • 23 липня 2018 р. 03:53

    Спасибо большое за то что ответили. Я поменял на

    Connections {
        target: myObject
    
            onSendToEmail:
            {
                label2.text = email
                console.log("email" + email);
            }
            onSendToName:{
                label1.text = name
                console.log("Name = " + name);
            }
    }

    Начал выводить ошибку

    qrc:/Mymenu.qml:11:5: QML Connections: Cannot assign to non-existent property "onSendToName"
    qrc:/Mymenu.qml:11:5: QML Connections: Cannot assign to non-existent property "onSendToEmail"
    qrc:/Mymenu.qml:12: ReferenceError: myObject is not defined

    На счет того что бы в программе было один ApplicationWindows. Я изменил в Mymenu.qml на Item и у меня одни окно наложилось на второе.
      Evgenii Legotckoi
      • 23 липня 2018 р. 03:59
      • Відповідь була позначена як рішення.

      Так, по поводу ошибок, там в main.cpp ещё одна ошибка у вас

      Надо так написать
      QQmlApplicationEngine engine;
      engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
      
      DBase myClass;
      engine.rootContext()->setContextProperty("myObject",&myClass);

      По поводу наложения окон - это правильное поведение. В Android в QML так и делается разработка - всё в одном окне должно быть.
      Здесь подход с обычными окнами не пройдёт.

        Коментарі

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

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

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

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

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

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

        • Результат:20бали,
        • Рейтинг балів-10
        Останні коментарі
        ИМ
        Игорь Максимов22 листопада 2024 р. 11:51
        Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
        Evgenii Legotckoi
        Evgenii Legotckoi31 жовтня 2024 р. 14:37
        Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
        A
        ALO1ZE19 жовтня 2024 р. 08:19
        Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
        ИМ
        Игорь Максимов05 жовтня 2024 р. 07:51
        Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
        d
        dblas505 липня 2024 р. 11:02
        QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
        Тепер обговоріть на форумі
        Evgenii Legotckoi
        Evgenii Legotckoi24 червня 2024 р. 15:11
        добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
        t
        tonypeachey115 листопада 2024 р. 06:04
        google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
        NSProject
        NSProject04 червня 2022 р. 03:49
        Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
        9
        9Anonim25 жовтня 2024 р. 09:10
        Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

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