Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. dato de un Dialog al MainWindow
Forum Updated to NodeBB v4.3 + New Features

dato de un Dialog al MainWindow

Scheduled Pinned Locked Moved Solved Spanish
8 Posts 2 Posters 1.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Casino
    wrote on last edited by
    #1

    Sigo sin poder enviar un dato, les pongo lo que tengo:
    uno.h
    signals:

    void nuevoTexto(QString);
    

    public slots:

    void on_enviarSeal_clicked();

    uno.cpp
    void uno::on_enviarSeal_clicked()
    {
    emit nuevoTexto(ui->players->text());
    }

    mainwindow.cpp

    uno *u = new uno(this);
    QObject::connect(u, SIGNAL(on_enviarSeal_clicked()), this, SLOT(ui->players->setText(QString)));

    lo que use antes lo habia copiado de Juanki y tampoco anduvo..

    1 Reply Last reply
    0
    • C Casino

      Disculpame, te envio todo lo que puedo a ver si podes orientarme:
      #ifndef UNO_H
      #define UNO_H

      #include <QMainWindow>
      #include <QDialog>
      #include <mainwindow.h>
      #include <QtSql/QSqlDatabase>
      #include <QtSql/QSqlQuery>
      #include <QtSql/QSqlError>
      #include <QObject>

      namespace Ui {
      class uno;
      }

      class uno : public QDialog
      {
      Q_OBJECT

      public:
      explicit uno(QWidget *parent = nullptr);
      ~uno();

      int jugadores = 0;
      

      signals:

      void nuevoTexto(QString);
      

      public slots:

      private slots:
      void on_volver_clicked();

      void CrearTablatabla1();
      
      void Mostrartabla1();
      
      void insertarJugadores();
      
      void on_delete_2_clicked();
      
      void on_insertarjug_clicked();
      

      private:
      Ui::uno *ui;

      QSqlDatabase data;
      

      };

      #endif // UNO_H

      void uno::on_insertarjug_clicked()
      {
      insertarJugadores();
      Mostrartabla1();
      emit nuevoTexto(ui->players->text());

      }
      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      #include <uno.h>
      #include "QTime"
      #include "QTimer"
      #include <QTimerEvent>
      #include <QMediaPlayer>
      #include <QList>
      #include "QLCDNumber"
      #include <QDebug>
      #include <QTableWidget>
      #include <QTableWidgetItem>
      #include <QtSql/QSqlDatabase>
      #include <QtSql/QSqlQuery>
      #include <QtSql/QSqlError>

      MainWindow::MainWindow(QWidget *parent)
      : QMainWindow(parent)
      , ui(new Ui::MainWindow)
      {
      ui->setupUi(this);
      QMainWindow::showMaximized();

      QStringList titulos;
      setWindowTitle("TORNEO DE POKER CON KNOCK-OUT PROGRESIVO");
      
      QString nombre;
      nombre.append("Ciegadb.sqlite");
      
      db = QSqlDatabase::addDatabase("QSQLITE");
      db.setDatabaseName(nombre);
      if(db.open()){
          qDebug()<<"Se ha conectado a la base de datos Ciegadb";
          db.close();
      }else{
          qDebug()<<"ERROR! No se ha conectado a la base de datos Ciegadb";
      }
      
      CrearTablaCiegas1();
      MostrarCiegas();
      
      cronometro = new QTimer(this);
      QObject::connect(cronometro, SIGNAL(timeout()), this, SLOT(unos()));
      timerId = startTimer(60);
      
      crono = new QTimer(this);
      QObject::connect(crono, SIGNAL(timeout()), this, SLOT(dos()));
      timerId1 = startTimer(60);
      
      reloj = new QTimer(this);
      QObject::connect(reloj, SIGNAL(timeout()), this, SLOT(rel()));
      timerId2 = startTimer(60);
      
      relojito = new QTimer(this);
      QObject::connect(relojito, SIGNAL(timeout()), this, SLOT(rel1()));
      timerId3 = startTimer(60);
      
      alarma->setMedia(QUrl::fromLocalFile("C:/Users/Daniel/Documents/Play02/campanas.mp3"));
      alarma->setVolume(30);
      
      ui->Ciegas->hide();
      
      uno *u;
      u = new uno();
      QObject::connect(u, SIGNAL(nuevoTexto(QString)), ui->players, SLOT(setText(QString)));
      

      }

      juankiJ Offline
      juankiJ Offline
      juanki
      Moderators
      wrote on last edited by
      #6

      Hola @Casino, Así por encima parece que la conexión la haces bien, ahora sí, como te dije antes, según veo aquí:

      void uno::on_insertarjug_clicked()
      {
      insertarJugadores();
      Mostrartabla1();
      emit nuevoTexto(ui->players->text());
      }

      parece que la señal la emites cuando pulsas un botón, como te dije prueba a imprimir ahí un texto y así compruebas que ese método se ejecute correctamente.

      uno *u;
      u = new uno();
      QObject::connect(u, SIGNAL(nuevoTexto(QString)), ui->players, SLOT(setText(QString)));
      

      Supongo que el dialog lo muestras en otra parte del código, por que si no lo muestras, no puedes pulsar el botón que emite la señal.

      Comprueba también que no estés creado otra instancia de uno en otra parte del código y sea esa la que muestras y por eso no se emite la señal.

      Un saludo

      Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
      Procura escribir correctamente y sin faltas de ortografía.

      Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

      1 Reply Last reply
      0
      • juankiJ Offline
        juankiJ Offline
        juanki
        Moderators
        wrote on last edited by
        #2

        Hola

        Tienes mal la sintaxis de la conxión, seguro que te debe estar mostrando un aviso por consola.

        QObject::connect(u, SIGNAL(nuevoTexto(QString)), ui->players, SLOT(setText(QString)));
        

        Tienes que conectar la señal que se emite (nuevoTexto) con el widget que quieres que la recibe (ui->player).

        Un saludo

        Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
        Procura escribir correctamente y sin faltas de ortografía.

        Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

        1 Reply Last reply
        0
        • C Offline
          C Offline
          Casino
          wrote on last edited by
          #3

          Tenés razón, eso lo hice cuando encontré tu forma, pero lo cambié porque no pasaba nada, de la manera en que vos lo ponés no hay aviso de mala conección, no da error de ningún tipo, pero en el ui->players del mainwindow no aparece nada, no se que diablos pasa....voy a seguir buscando......

          1 Reply Last reply
          0
          • juankiJ Offline
            juankiJ Offline
            juanki
            Moderators
            wrote on last edited by
            #4

            Hola

            Con el ejemplo que pusiste poco más se te puede decir, parece que emites la señal cuando se pulsa un botón, comprueba que no te hayas equivocado de botón.

            Una forma muy básica pero sencilla de depurar es ir imprimiendo textos por consola en diferentes puntos de tu código, puedes imprimir un mensaje justo antes de emitir la señal y así compruebas que ese método se ejecuta.

            Un saludo.

            Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
            Procura escribir correctamente y sin faltas de ortografía.

            Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

            1 Reply Last reply
            0
            • C Offline
              C Offline
              Casino
              wrote on last edited by
              #5

              Disculpame, te envio todo lo que puedo a ver si podes orientarme:
              #ifndef UNO_H
              #define UNO_H

              #include <QMainWindow>
              #include <QDialog>
              #include <mainwindow.h>
              #include <QtSql/QSqlDatabase>
              #include <QtSql/QSqlQuery>
              #include <QtSql/QSqlError>
              #include <QObject>

              namespace Ui {
              class uno;
              }

              class uno : public QDialog
              {
              Q_OBJECT

              public:
              explicit uno(QWidget *parent = nullptr);
              ~uno();

              int jugadores = 0;
              

              signals:

              void nuevoTexto(QString);
              

              public slots:

              private slots:
              void on_volver_clicked();

              void CrearTablatabla1();
              
              void Mostrartabla1();
              
              void insertarJugadores();
              
              void on_delete_2_clicked();
              
              void on_insertarjug_clicked();
              

              private:
              Ui::uno *ui;

              QSqlDatabase data;
              

              };

              #endif // UNO_H

              void uno::on_insertarjug_clicked()
              {
              insertarJugadores();
              Mostrartabla1();
              emit nuevoTexto(ui->players->text());

              }
              #include "mainwindow.h"
              #include "ui_mainwindow.h"
              #include <uno.h>
              #include "QTime"
              #include "QTimer"
              #include <QTimerEvent>
              #include <QMediaPlayer>
              #include <QList>
              #include "QLCDNumber"
              #include <QDebug>
              #include <QTableWidget>
              #include <QTableWidgetItem>
              #include <QtSql/QSqlDatabase>
              #include <QtSql/QSqlQuery>
              #include <QtSql/QSqlError>

              MainWindow::MainWindow(QWidget *parent)
              : QMainWindow(parent)
              , ui(new Ui::MainWindow)
              {
              ui->setupUi(this);
              QMainWindow::showMaximized();

              QStringList titulos;
              setWindowTitle("TORNEO DE POKER CON KNOCK-OUT PROGRESIVO");
              
              QString nombre;
              nombre.append("Ciegadb.sqlite");
              
              db = QSqlDatabase::addDatabase("QSQLITE");
              db.setDatabaseName(nombre);
              if(db.open()){
                  qDebug()<<"Se ha conectado a la base de datos Ciegadb";
                  db.close();
              }else{
                  qDebug()<<"ERROR! No se ha conectado a la base de datos Ciegadb";
              }
              
              CrearTablaCiegas1();
              MostrarCiegas();
              
              cronometro = new QTimer(this);
              QObject::connect(cronometro, SIGNAL(timeout()), this, SLOT(unos()));
              timerId = startTimer(60);
              
              crono = new QTimer(this);
              QObject::connect(crono, SIGNAL(timeout()), this, SLOT(dos()));
              timerId1 = startTimer(60);
              
              reloj = new QTimer(this);
              QObject::connect(reloj, SIGNAL(timeout()), this, SLOT(rel()));
              timerId2 = startTimer(60);
              
              relojito = new QTimer(this);
              QObject::connect(relojito, SIGNAL(timeout()), this, SLOT(rel1()));
              timerId3 = startTimer(60);
              
              alarma->setMedia(QUrl::fromLocalFile("C:/Users/Daniel/Documents/Play02/campanas.mp3"));
              alarma->setVolume(30);
              
              ui->Ciegas->hide();
              
              uno *u;
              u = new uno();
              QObject::connect(u, SIGNAL(nuevoTexto(QString)), ui->players, SLOT(setText(QString)));
              

              }

              juankiJ 1 Reply Last reply
              0
              • C Casino

                Disculpame, te envio todo lo que puedo a ver si podes orientarme:
                #ifndef UNO_H
                #define UNO_H

                #include <QMainWindow>
                #include <QDialog>
                #include <mainwindow.h>
                #include <QtSql/QSqlDatabase>
                #include <QtSql/QSqlQuery>
                #include <QtSql/QSqlError>
                #include <QObject>

                namespace Ui {
                class uno;
                }

                class uno : public QDialog
                {
                Q_OBJECT

                public:
                explicit uno(QWidget *parent = nullptr);
                ~uno();

                int jugadores = 0;
                

                signals:

                void nuevoTexto(QString);
                

                public slots:

                private slots:
                void on_volver_clicked();

                void CrearTablatabla1();
                
                void Mostrartabla1();
                
                void insertarJugadores();
                
                void on_delete_2_clicked();
                
                void on_insertarjug_clicked();
                

                private:
                Ui::uno *ui;

                QSqlDatabase data;
                

                };

                #endif // UNO_H

                void uno::on_insertarjug_clicked()
                {
                insertarJugadores();
                Mostrartabla1();
                emit nuevoTexto(ui->players->text());

                }
                #include "mainwindow.h"
                #include "ui_mainwindow.h"
                #include <uno.h>
                #include "QTime"
                #include "QTimer"
                #include <QTimerEvent>
                #include <QMediaPlayer>
                #include <QList>
                #include "QLCDNumber"
                #include <QDebug>
                #include <QTableWidget>
                #include <QTableWidgetItem>
                #include <QtSql/QSqlDatabase>
                #include <QtSql/QSqlQuery>
                #include <QtSql/QSqlError>

                MainWindow::MainWindow(QWidget *parent)
                : QMainWindow(parent)
                , ui(new Ui::MainWindow)
                {
                ui->setupUi(this);
                QMainWindow::showMaximized();

                QStringList titulos;
                setWindowTitle("TORNEO DE POKER CON KNOCK-OUT PROGRESIVO");
                
                QString nombre;
                nombre.append("Ciegadb.sqlite");
                
                db = QSqlDatabase::addDatabase("QSQLITE");
                db.setDatabaseName(nombre);
                if(db.open()){
                    qDebug()<<"Se ha conectado a la base de datos Ciegadb";
                    db.close();
                }else{
                    qDebug()<<"ERROR! No se ha conectado a la base de datos Ciegadb";
                }
                
                CrearTablaCiegas1();
                MostrarCiegas();
                
                cronometro = new QTimer(this);
                QObject::connect(cronometro, SIGNAL(timeout()), this, SLOT(unos()));
                timerId = startTimer(60);
                
                crono = new QTimer(this);
                QObject::connect(crono, SIGNAL(timeout()), this, SLOT(dos()));
                timerId1 = startTimer(60);
                
                reloj = new QTimer(this);
                QObject::connect(reloj, SIGNAL(timeout()), this, SLOT(rel()));
                timerId2 = startTimer(60);
                
                relojito = new QTimer(this);
                QObject::connect(relojito, SIGNAL(timeout()), this, SLOT(rel1()));
                timerId3 = startTimer(60);
                
                alarma->setMedia(QUrl::fromLocalFile("C:/Users/Daniel/Documents/Play02/campanas.mp3"));
                alarma->setVolume(30);
                
                ui->Ciegas->hide();
                
                uno *u;
                u = new uno();
                QObject::connect(u, SIGNAL(nuevoTexto(QString)), ui->players, SLOT(setText(QString)));
                

                }

                juankiJ Offline
                juankiJ Offline
                juanki
                Moderators
                wrote on last edited by
                #6

                Hola @Casino, Así por encima parece que la conexión la haces bien, ahora sí, como te dije antes, según veo aquí:

                void uno::on_insertarjug_clicked()
                {
                insertarJugadores();
                Mostrartabla1();
                emit nuevoTexto(ui->players->text());
                }

                parece que la señal la emites cuando pulsas un botón, como te dije prueba a imprimir ahí un texto y así compruebas que ese método se ejecute correctamente.

                uno *u;
                u = new uno();
                QObject::connect(u, SIGNAL(nuevoTexto(QString)), ui->players, SLOT(setText(QString)));
                

                Supongo que el dialog lo muestras en otra parte del código, por que si no lo muestras, no puedes pulsar el botón que emite la señal.

                Comprueba también que no estés creado otra instancia de uno en otra parte del código y sea esa la que muestras y por eso no se emite la señal.

                Un saludo

                Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
                Procura escribir correctamente y sin faltas de ortografía.

                Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  Casino
                  wrote on last edited by
                  #7

                  Comprueba también que no estés creado otra instancia de uno en otra parte del código y sea esa la que muestras y por eso no se emite la señal.
                  Alli estaba el problema, ya se soluciono. Gracias./

                  juankiJ 1 Reply Last reply
                  0
                  • C Casino

                    Comprueba también que no estés creado otra instancia de uno en otra parte del código y sea esa la que muestras y por eso no se emite la señal.
                    Alli estaba el problema, ya se soluciono. Gracias./

                    juankiJ Offline
                    juankiJ Offline
                    juanki
                    Moderators
                    wrote on last edited by
                    #8

                    Me alegro que se arreglara @Casino

                    Revisa no te estés dejando punteros por ahí sin liberar.

                    ¡¡ Recuerda marcar el tema como Solucionado !! Este vez te lo hice yo, pero ¡¡ no lo olvides para la próxima !!

                    Un saludo

                    Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
                    Procura escribir correctamente y sin faltas de ortografía.

                    Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

                    1 Reply Last reply
                    0

                    • Login

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved