W
WXQ23 июля 2018 г. 2: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 г. 3: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 г. 3: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 г. 3:59
      • Ответ был помечен как решение.

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

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

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

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь
        e
        • ehot
        • 31 марта 2024 г. 14:29

        C++ - Тест 003. Условия и циклы

        • Результат:78баллов,
        • Очки рейтинга2
        B

        C++ - Тест 002. Константы

        • Результат:16баллов,
        • Очки рейтинга-10
        B

        C++ - Тест 001. Первая программа и типы данных

        • Результат:46баллов,
        • Очки рейтинга-6
        Последние комментарии
        k
        kmssr8 февраля 2024 г. 18:43
        Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
        АК
        Анатолий Кононенко5 февраля 2024 г. 1:50
        Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
        EVA
        EVA25 декабря 2023 г. 10:30
        Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
        J
        JonnyJo25 декабря 2023 г. 8:38
        Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
        G
        Gvozdik18 декабря 2023 г. 21:01
        Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
        Сейчас обсуждают на форуме
        a
        a_vlasov14 апреля 2024 г. 6:41
        Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
        Павел Дорофеев
        Павел Дорофеев14 апреля 2024 г. 2:35
        QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь
        f
        fastrex4 апреля 2024 г. 4:47
        Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
        P
        Pisych27 февраля 2023 г. 4:04
        Как получить в массив значения из связанной модели? Спасибо, разобрался:))
        AC
        Alexandru Codreanu19 января 2024 г. 11:57
        QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…

        Следите за нами в социальных сетях