代码之家  ›  专栏  ›  技术社区  ›  Surjya Narayana Padhi

关于qstackedwidget的帮助

  •  3
  • Surjya Narayana Padhi  · 技术社区  · 15 年前

    我在主窗口上使用qstackedwidget。StackedWidget上的FirstPageWidget包含3个按钮。现在,如果我按下第一页上的第一个按钮,我希望stackedwidget显示第二页的widget。具体情况如下

    我试着在主窗口像这样连接

    connect(firstPageWidget->button1,SIGNAL(clicked()),stackWidget,SLOT(setCurrentIndex(int)));
    

    现在我想知道如何将索引号的值传递给stackwidget以设置currentindex?

    如果我的问题不太清楚,请告诉我我会解释更多。

    3 回复  |  直到 12 年前
        1
  •  5
  •   Ajith    12 年前

    你可能需要使用 QSignalMapper 班级:

    QSignalMapper mapper = new QSignalMapper(); // don't forget to set the proper parent
    mapper->setMapping(firstPageWidget->button1, 2); // 2 can be replaced with any int value
    connect(firstPageWidget->button1, SIGNAL(clicked()), mapper, SLOT(map()));
    connect(mapper, SIGNAL(mapped(int)), stackWidget, SLOT(setCurrentIndex(int)));
    
        2
  •  0
  •   Exa    15 年前

    您可以使用包含可选图标的qlistwidget来代替按钮。QlistWidget有一个名为 QListWidget::currentItemChanged ( QListWidgetItem * current, QListWidgetItem * previous ) . 我在不久前写的程序中使用了这个方法…在那里我写了一个函数 on_change_widget( QListWidgetItem *current, QListWidgetItem *previous ) 我把它接到信号机上 currentItemChanged :

    connect( my_list_widget,
             SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
             this,
             SLOT(on_change_widget(QListWidgetItem *, QListWidgetItem *))
           );
    

    这应该能解决问题。

    你应该看看 Config Dialog Example 在那里,它们使用相同的方法交换小部件。

    当然,您也可以使用普通按钮,与上面提到的qsignalmapper chalup相关。

        3
  •  0
  •   Kamil Klimek    15 年前

    您也可以使用QbuttonGroup并为每个按钮设置正确的ID,然后连接QbuttonGroup信号。 QButtonGroup::buttonClicked(int) 带堆叠小部件插槽 QStackedWidget::setCurrentIndex(int)

    推荐文章