我在qt中使用QStackedWidget类,并希望从一个列表移动到其他列表(QListWidget)。但我无法动弹。
我使用过QStackedWidget类并在其下添加了两个列表:
QStackedWidget *stack = new QStackedWidget();
stack->addWidget(list1);
stack->addWidget(list2);
List1
和List2
有差异元素:
List1->addItem("Hello");
list1->addItem("Hi");
单击Hello ListWidgetItem时,它应移至列表2 ....
答案 0 :(得分:1)
您需要使用以下代码。
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);
}
...