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.
En este otro proyecto de prueba coloque 3 controles y solo se muestran 2 de ellos:
Aquí el detalle del form:
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.
-
@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.