How to navigate from one ListWidget to other ListWidget using QStackedwidget in qt [closed]

StackOverflow https://stackoverflow.com/questions/20965829

  •  25-09-2022
  •  | 
  •  

Question

I am using QStackedWidget class in qt and wanted to move from one list to other list(QListWidget). But i am unable to move.

I have used QStackedWidget class and added both list under it :

QStackedWidget *stack = new QStackedWidget();
stack->addWidget(list1);
stack->addWidget(list2);

List1 and List2 are having diff elements :

List1->addItem("Hello");
list1->addItem("Hi");

When clicking on Hello ListWidgetItem, it should move to list 2....

Was it helpful?

Solution

You would need to use something like this code below.

myclass.h

class MyClass : public QObject
{
    Q_OBJECT
    public:
        explicit MyClass(QObject *parent = 0);

    ...

    public slots:
        void swapListWidgets();

    ...

    private:
        QStackedWidget *m_stackedWidget;
}

myclass.cpp

MyClass::MyClass(QObject *parent)
    : QObject(parent)
    , m_stackedWidget(new QStackedWidget(this))
{
    QListWidget *listWidget1 = new QListWidget(m_stackedWidget);
    listWidget1->addItem("Hello");
    listWidget1->addItem("Hi");
    QListWidget *listWidget2 = new QListWidget(m_stackedWidget);

    m_stackedWidget->addWidget(listWidget1);
    m_stackedWidget->addWidget(listWidget2);
    ...

    connect(listWidget1, SIGNAL(itemClicked(QListWidgetItem * item)), SLOT(swapListWidgets(QListWidgetItem * item)));

    // OR

    connect(m_stackedWidget.index(0), SIGNAL(itemClicked(QListWidgetItem * item)), SLOT(swapListWidgets(QListWidgetItem * item)));

    ...

}

...

MyClass::swapListWidgets(QListWidgetItem *item)
{
    if (item.text() == "Hello")
        m_stackedWidget.setCurrentWidget(list2);
        // or m_stackedWidget.setCurrentIndex(1);
}

...
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top