dato de un Dialog al MainWindow
-
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..
-
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
-
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
-
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......
-
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.
-
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_OBJECTpublic:
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)));
}
-
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