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....
You would need to use something like this code below.
class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = 0);
...
public slots:
void swapListWidgets();
...
private:
QStackedWidget *m_stackedWidget;
}
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);
}
...