© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
23 июля 2018 г. 6: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 окно а на второе нет.










Добрый день!

У вас здесь есть ещё одна проблема, которая будет постоянно портить вам кровь. Если вы ведёте разработку под Андроид, то вам нужно разрабатывать приложение, используя одно окно. Иначе, когда вы запустите на Андроиде, то у вас работать ничего не будет. Андроид не поддерживает несколько окон в одном прилоежнии.
Поэтому 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);
        }
}

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

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 и у меня одни окно наложилось на второе.

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

Надо так написать
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

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

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

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
15 августа 2018 г. 19:02
Lord Inquisitoris

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

  • Результат 57баллов,
  • Очки рейтинга-2
15 августа 2018 г. 18:58
Lord Inquisitoris

C++ - Тест 005. Структуры и Классы

  • Результат 83баллов,
  • Очки рейтинга4
15 августа 2018 г. 9:29
Леха Завистович

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

  • Результат 86баллов,
  • Очки рейтинга6
Последние комментарии
10 августа 2018 г. 13:40
Alex

Работа с триггерными функциями в PostgreSQL

Приветствую! Если вы создаете новую таблицу, почему бы просто не сделать вьюху ? Просто от одного названия "триггер" как-то не хочется его использовать, а уж кода сколько писа...
10 августа 2018 г. 11:46
Евгений Легоцкой

Bash скрипт для создания и скачивания дампа базы данных и медиа файлов с удаленного сервера

Вон оно что. Не сталкивался с таким, надо будет глянуть исходники дефолтного менеджера объектов. Возможно там кеширование просто. Пробовали добавить запись через adminer, перезапусти...
10 августа 2018 г. 11:34
Alex

Bash скрипт для создания и скачивания дампа базы данных и медиа файлов с удаленного сервера

допустим у нас есть любая таблица, созданная джангой. через админку добавляем пару записей. все ок. далее, лично в моем случае , я открываю adminer, и в эту таблицу добавляю еще одну зап...
Сейчас обсуждают на форуме
15 августа 2018 г. 14:06
Олег Корнев

Как подключить QtCharts в QML?

После некоторых манипуляций (переустановил креатор) смог запустить экземплы с использованием QtCharts, но все они работают с подключениями в файлах .pro .cpp, у меня таких файлов нет. Как...
14 августа 2018 г. 7:02
Ruslan-maniak

Переключение страниц и перевод фокуса на потомка новой страницы

Большое спасибо. Подтолкнули меня на мысль вынести обработку клавиш из PathView на всю страницу. И тогда - да, ваша подсказка работает. добавил в StackView onCurrentItemChanged: currentItem.fo...
14 августа 2018 г. 6:39
Евгений Легоцкой

Как сделать аудиовизуализацию для плеера на qt?

Добрый день. Просмотрите пример в Qt Creator, который на QML, там реализовано визуализация, возможно вам понравится использовать, QML, да и кастомные интерфейсы на нём всё-таки лучше...
11 августа 2018 г. 10:12
Евгений Легоцкой

Qt C++ vs QML

Добрый день. Если Андроид предполагается, то конечно нужно использовать QML. Я занимался разработкой арканоида на QML и ещё одной игры. Пытался реализовывать логику на QML, но это ...
11 августа 2018 г. 9:24
Евгений Легоцкой

Помогите со слоями

Проверочное сообщение

Рекомендуемые страницы