【问题标题】:How to navigate from one ListWidget to other ListWidget using QStackedwidget in qt [closed]如何在 qt 中使用 QStackedwidget 从一个 ListWidget 导航到另一个 ListWidget [关闭]
【发布时间】:2014-01-07 07:05:39
【问题描述】:

我在 qt 中使用 QStackedWidget 类,并希望从一个列表移动到另一个列表(QListWidget)。但我不能动。

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

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

List1List2 有差异元素:

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

当点击 Hello ListWidgetItem 时,它应该移动到列表 2....

【问题讨论】:

标签: c++ qt qwidget qtgui


【解决方案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);
}

...

【讨论】:

  • 两个列表都在 QStackedWidget 中。那么如何在connect()下传递它们
猜你喜欢
  • 1970-01-01
  • 2014-05-11
  • 2013-02-09
  • 2020-06-25
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
相关资源
最近更新 更多