Important: Please read the Qt Code of Conduct -

how to navigate with qwidget in qmainwindow

  • Hi everyone, can you help me?

    My problem is i have one mainwindow with qcentralwidget, when user click on a button, then personnal widget is load and in the widget you can access to other widget.

    To use that I use ```

    // clicked for display param widget
    QObject::connect(widget_acc, SIGNAL(Display_widget_param()),this, SLOT(display_widget_param()),Qt::UniqueConnection);
    with connect i handle display of other widget in slot :

    void accueil::display_widget_param(){
    this->param = new parametrage();
    // clicked for back in index widget
    QObject::connect(param, SIGNAL(Fermeture_parametrage()),this, SLOT(update_widget_accueil()),Qt::UniqueConnection);
    QObject::connect(param, SIGNAL(Lancer_video()),this, SLOT(Lancer_video()),Qt::UniqueConnection);

    if i delete    this->param = new parametrage(); .

    QObject::connect: No such signal QObject::Fermeture_parametrage()
    QObject::connect: (sender name: 'parametrage')
    QObject::connect: (receiver name: 'accueil')

    I have my first widget display, after i click button its ok, after I click back button for display first screen but connect dont worked, like if param sender had reset?
    I don't understand beacause it's run one times and my widget is initialize in my mainwindow so he can't reset no?
    I saw Qstatewidget for navigate it's better solution for me? and why connect work 1 times and after no? 
    Thanks for you helping.

  • Lifetime Qt Champion

    @kevin32 said:
    Its not 100% clear for me what you are trying :)
    setCentralWidget is special
    "Note: QMainWindow takes ownership of the widget pointer and deletes it at the appropriate time."

    This means that widget_acc will be deleted when you call
    setCentralWidget(param); << u give it new, it deletes old.

    So if you try to go back to that Widget then it wont work.

    If you need something like pages. So in mainwindow, you switch between
    pages/screens, then QStackedWidget is super good for this.

  • Lifetime Qt Champion

    Yes that is indeed a good example. Thank you for posting.

Log in to reply