How to access widgets created with the UI Designer from another (a sub) class.



  • Hello!

    I'm a begginer, started this month programming with QT. So long I've been able to create a GUI (ControlLoop) with the QT Designer and access its widgets with signals and slots declared in the Sourcefile. Now I have a new class (StartGui) which inherits from ControlLoop. In StartGui I'm trying to catch the signals from the ControlLoop's widgets at runtime, I have tried almost everything I've read. I connect the signals and slots in der StartGui class and get no error messages. But whenever the program is running and I change the Text in e.g. a QLineEdit, nothing happens. Could you please help me? I've been stuck at this point for days.

    I don't know what I'm doing wrong whenever I connect the Widgets, the nothing happens when the programm is running and I do any of the signals.

    Is it even possible to acces those widgets from the subclass or is the whole idea just wrong=

    Thank you very much!

    @
    #ifndef CONTROLLOOP_H
    #define CONTROLLOOP_H

    #include <QObject>
    #include <QMainWindow>

    namespace Ui {
    class ControlLoop;
    }

    class ControlLoop : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit ControlLoop(QWidget *parent = 0);
    ~GUIRegelKreis();

    Ui::ControlLoop *ui;
    

    ...
    }
    @

    @
    #include "controloop.h"
    #include "ui_controloop.h"

    ControLoop::ControLoop(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ControLoop)
    {
    ui->setupUi(this);
    }
    @

    @
    #ifndef STARTGUI_H
    #define STARTGUI_H

    #include "controlloop.h"
    #include "ui_guiregelkreis.h"

    class StartGui : public ControlLoop
    {

    Q_OBJECT
    

    public:
    StartGui();
    ControlLoop *GUI;

    public slots:
    void on_JobLineEdit_textChanged(QString)
    ....
    }
    @

    @
    #include "startgui.h"
    #include "ui_controlloop.h"

    StartGui::StartGui()
    {

    GUI = new ControlLoop();

    connect(GUI->ui->JobLineEdit, SIGNAL(textChanged(QString)),
            this, SLOT(on_JobLineEdit_textChanged(QString)));
    connect(GUI->ui->MaschineLineEdit, SIGNAL(textChanged(QString)),
            this, SLOT(on_MaschineLineEdit_textChanged(QString)));
    

    ....

    void StartGui::on_JobLineEdit_textChanged(QString)
    {
    ...
    }
    ...
    }
    @



  • did you declare on_MaschineLineEdit_textChanged(QString)



  • Hello.
    I'm sorry, but it's not QT, it's Qt.
    Also, why do you need this inheritence? Just make your class for main window, draw interface for it and then right-click on desired element and choose "Go to slot".


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.