Помощь по QStackedWidget - PullRequest
3 голосов
/ 12 апреля 2010

Я использую QStackedWidget в моем главном окне. ПервыйPageWidget на stackedWidget содержит 3 кнопки. Теперь, если я нажму первую кнопку на первой странице, я хочу, чтобы составной виджет отображал виджет 2-й страницы. Ниже приведены подробности

Я попытался подключиться так в моем главном окне

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

Теперь я хочу знать, как передать значение порядкового номера в stackWidget для установки currentIndex?

Если мой вопрос не очень ясен, пожалуйста, скажите мне, я объясню больше.

Ответы [ 3 ]

5 голосов
/ 12 апреля 2010

Вам, вероятно, нужно использовать QSignalMapper class:

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)));
0 голосов
/ 13 апреля 2010

Вы также можете использовать QButtonGroup и установить надлежащий идентификатор для каждой кнопки, затем подключить сигнал QButtonGroup QButtonGroup::buttonClicked(int) со сложенным слотом виджета QStackedWidget::setCurrentIndex(int)

0 голосов
/ 12 апреля 2010

Вместо кнопок вы можете использовать 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 , там они используют тот же метод для замены виджетов.

Конечно, вы также можете использовать обычные кнопки в связи с упомянутым халапом QSignalMapper.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...