Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Error al inicializar form



  • Buenas tardes, no encuentro mi error, he probado con un proyecto en limpio y no me arroja este error, he comparado ambos y no encuentro diferencia.
    El error de compilación que recibo es:
    frmLogin.cpp:13: error: no matching function for call to 'Ui::FrmLogin::setupUi(FrmLogin*)'
    ui->setupUi(this);
    ^
    frmLogin.h

    #ifndef FRMLogin_H
    #define FRMLogin_H
    
    #include <QDialog>
    
    namespace Ui {
    class FrmLogin;
    }
    
    class FrmLogin : public QDialog
    {
        Q_OBJECT
    
    public:
        explicit FrmLogin(QWidget *parent = 0);
        ~FrmLogin();
    
    signals:
        void botonesVisibles(bool);
        void botones1Visibles(bool);
    
    private slots:
        void on_pulsaGuardaNum_clicked();
    
    private:
        Ui::FrmLogin *ui;
    
    public slots:
    
        //Botones teclado numerico
        void pulsa0();
        void pulsa1();
        void pulsa2();
        void pulsa3();
        void pulsa4();
        void pulsa5();
        void pulsa6();
        void pulsa7();
        void pulsa8();
        void pulsa9();
        void pulsaCLR();
        void pulsaCerrar();
    };
    
    #endif // FRMLogin_H
    

    frmLogin.cpp

    #include "mainwindow.h"
    #include "frmLogin.h"
    #include "ui_frmLogin.h"
    #include <QMessageBox>
    //#include <iostream>
    
    //using namespace std;
    
    FrmLogin::FrmLogin(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::FrmLogin)
    {
        ui->setupUi(this);
        //QMainWindow::showFullScreen(); //Muestro ventana en pantalla completa
        ui->LE_Password->setVisible(false);//Oculto cuadro de texto de password
    }
    
    FrmLogin::~FrmLogin()
    {
        delete ui;
    }
    
    
    void on_pulsaGuardaNum_clicked(){
    
        int password = uiFrmLogin->LE_Password->text().toInt();
        switch (password) {
        case 2725:
            MainWindow::nivelAcceso = 1; //Nivel Operador
            cout<<"nivel 1"<<endl;
            emit botonesVisibles(true);//Se emite la señal al pulsar en boton para ocultar botones tiempos y ajustes
            emit botones1Visibles(false);//Se emite la señal al pulsar en boton para ocultar botones crear ficheros de presets
            FrmLogin::close();
            //delete ui;
            break;
        case 70272:
            MainWindow::nivelAcceso = 2; //Nivel Tecnico
            cout<<"nivel 2"<<endl;
            emit botonesVisibles(true);//Se emite la señal al pulsar en boton para ocultar botones tiempos y ajustes
            emit botones1Visibles(true);//Se emite la señal al pulsar en boton para ocultar botones crear ficheros de presets
            FrmLogin::close();
            //delete Ui_FrmLogin;
            break;
        default:
            MainWindow::nivelAcceso = 0; //Nivel Usuario
            cout<<"nivel 0 - ERROR"<<endl;
            emit botonesVisibles(false);//Se emite la señal al pulsar en boton para ocultar botones tiempos y ajustes
            emit botones1Visibles(false);//Se emite la señal al pulsar en boton para ocultar botones crear ficheros de presets
            //ui->PB_Password->setText("");
            //ui->LE_Password->setText("");
            QMessageBox::warning(this,"ERROR","Clave erronea");
            break;
        }
    }
    
    void FrmLogin::pulsaCLR(){
        ui->LE_Password->setText("");
        ui->PB_Password->setText("");
    }
    
    void FrmLogin::pulsaCerrar(){
        MainWindow::nivelAcceso = 0;
        //ui->PB_Password->setText("");
        //ui->LE_Password->setText("");
    
        //MainWindow::->BT_Ajustes->setVisible(false);
        //ui->BT_Tiempos->setVisible(false);
        //ui->BT_Genera_preset1->setVisible(false);
        //ui->BT_Genera_preset_a->setVisible(false);
        FrmLogin::close();
        //delete ui;
    }
    
    
    void FrmLogin::pulsa0(){
        ui->LE_Password->setText(ui->LE_Password->text() + "0");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    
    }
    
    void FrmLogin::pulsa1(){
        ui->LE_Password->setText(ui->LE_Password->text() + "1");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    
    void FrmLogin::pulsa2(){
        ui->LE_Password->setText(ui->LE_Password->text() + "2");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    
    void FrmLogin::pulsa3(){
        ui->LE_Password->setText(ui->LE_Password->text() + "3");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    
    void FrmLogin::pulsa4(){
        ui->LE_Password->setText(ui->LE_Password->text() + "4");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    
    void FrmLogin::pulsa5(){
        ui->LE_Password->setText(ui->LE_Password->text() + "5");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    
    void FrmLogin::pulsa6(){
        ui->LE_Password->setText(ui->LE_Password->text() + "6");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    
    void FrmLogin::pulsa7(){
        ui->LE_Password->setText(ui->LE_Password->text() + "7");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    
    void FrmLogin::pulsa8(){
        ui->LE_Password->setText(ui->LE_Password->text() + "8");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    
    void FrmLogin::pulsa9(){
        ui->LE_Password->setText(ui->LE_Password->text() + "9");
        ui->PB_Password->setText(ui->PB_Password->text() + "*");
    }
    

    El error me lo marca en el frmLogin.cp en la linea 13 (ui->setupUi(this);)
    A ver si vosotros veis algo porque yo por más que busco no encuentro el porqué del fallo.
    Muchas gracias y un saludo.



  • Ya encontré el problema, lo dejo aqui por si le pasa a alguien más.
    El error ocurrió porque en Qt Creator cambié frmLogin de QMainWindow a QDialog, pero en Qt Designer que fue donde lo cree en principio no estaba cambiado, por lo que el fichero frmLogin.ui seguía indicando que la clase era un QMainWindow.

    Solución, cambiar en frmLogin.ui al inicio la clase a QDialog.


Log in to reply