如何使用qt中的QStackedwidget从一个ListWidget导航到其他ListWidget

时间:2014-01-07 07:05:39

标签: c++ qt qwidget qtgui

我在qt中使用QStackedWidget类,并希望从一个列表移动到其他列表(QListWidget)。但我无法动弹。

我使用过QStackedWidget类并在其下添加了两个列表:

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

List1List2有差异元素:

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

单击Hello ListWidgetItem时,它应移至列表2 ....

1 个答案:

答案 0 :(得分:1)

您需要使用以下代码。

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);
}

...