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

No se cargan los controles desde el mainwindow.cpp



  • Hola,
    Tengo win10 pro en 32 bit, QT 5.14.0 instalado este año en curso 2020, el problema es el siguiente:
    1- en el form se agregaron 4 QLineEdit, 4 Label y un PushButton.
    2- Al momento de acceder a ellos desde el mainwindow.cpp, estos no aparecen.
    Archivo del proyeto:

    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    CONFIG += c++11
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
        main.cpp \
        mainwindow.cpp
    
    HEADERS += \
        mainwindow.h
    
    FORMS += \
        mainwindow.ui
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    

    Código mainwindow.cpp:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::ColocarNombre()
    {
        //rellenar casilla nombre
    ui->/*
             En el menu flotante sale esto
             setupUi
             retransLateui
             menubar
             statusbar
             centralwidget
             MainWindow
             Ui_MainWindow
             operartor=
             ~ManinWindow
             ~Ui_MainWindow
    */
    }
    

    Código mainwindow.h:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
        //FUNCIONES PROTOTIPOS
        void ColocarNombre();
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
    

    En cambio en otro proyecto solo coloque unQLineEdit y un pushbutton, al momento de acceder a los controles creados en el form si salen.
    Pero en el momento de colocar un tercer control, este ultimo no aparece en el menú flotante, en cambio los otros dos widgets si salen, no entiendo.
    acceder_controles.png
    En este otro proyecto de prueba coloque 3 controles y solo se muestran 2 de ellos:
    acceder_controles.png
    Aquí el detalle del form:
    controles.png
    si me pueden ayudar, de lo contrario tendré que desintalar y ver que versión no de problema.



  • Hola,

    Cuando modificas el UI tienes que compilar este fichero. Al compilarlo se genera (o actualiza) el fichero con el nombre "ui_NombreDeMiUI.h". Este fichero es el que tienes en el "#include" de tu mainwindow, en tu caso "ui_mainwindow.h". Ahora ya te funcionará. El fichero "ui_mainwindow.h" puedes abrirlo y verás como se crean los elementos del UI. Este fichero no debe ser NUNCA modificado a mano ya que cada vez que compiles el fichero ".ui" se volverá a generar.


  • Moderators

    Hola

    A mi me ha pasado también eso a veces y, como dice @ollarch, se me ha solucionado compilando el proyecto, así que hazlo.

    Un saludo



  • @ollarch Gracias por la ayuda, al compilar o la opción rebuild lo estaba usando y me sale la actualización de los controles que agrego en el form.
    Lo que me tiene en duda, es porque con esta versión de QT 5.14. no se actualiza y no se encuentra disponible estos controles, en otra laptop tenia versiones como 5.5 y pasaba lo contrario, control que agregaba en el form y luego en mainwindow.cpp en el menú estaban.
    Lo estaba usando lo que programaba en Run, vaya error, hace tiempo que no usaba QT y ahora tengo que usarlo seguido, error de mi parte, gracias por tu tiempo.



  • @nostromos si tu problema está resuelto, por favor no te olvides de marcarlo como tal (solved)



  • @juanki Gracias por responderme, inicialmente estaba usando RUN, pero con otras versiones de QT no se presentaba este problema.
    Control que agregaba al form y no grababa, al acceder a este control en el mainwindow.cpp estaba disponible, aun cuando no compilaba, pero, este QT5.14 NO LO HACE, pero en fin, cada vez que agrego controles a compilar y seguir.
    Gracias y cuidate.



  • Supongo que tendrá que ver con algún parámetro de configuración de QtCreator. Seguramente hay alguna opción de compilar el UI automáticamente al guardar el fichero.


Log in to reply