Я думаю, что я имею довольно основную проблему Qt, но я не могу понять:QStackedWidget навигации от страницы к странице
У меня есть QMainWindow, который держит QStackedWidget. Все виджеты страниц содержат отдельные классы, полученные из QWidget.
Итак:
QMainWindow реализует QStacked окно в одном классе. Все остальные страницы внутри сложного виджета - это добавленные классы, и у всех есть свои собственные .ui, заполненные кнопками и списками через Designer.
Для навигации по разным страницам, внутри MainWindow у меня есть доступ к: ui.stackedWidget->setCurrentIndex(2);
Кажется, я не имею доступ к ui.stackedWidget на другой странице внутри сложенного виджета? У меня нет доступа к ui.stackedWidget, потому что Ui является частным членом класса mainwindow. (автоматически генерируется Qt - с использованием VS-аддона для добавления классов QT4)
Я хотел бы знать, как я могу перейти на другую страницу в сложном виджетах, нажав на кнопку, принадлежащую другой странице внутри этого виджета?
Примечание:
Все страницы добавляются в StackedWidget в конструкторе MainWindow в:
ui.stackedWidget->addWidget(page1Widget);
ui.stackedWidget->addWidget(page2Widget);
// etc..
пример щелчка кнопки сигнала интервала внутри page1Widget:
connect(ui.btnViewData, SIGNAL(clicked()), this, SLOT(viewData()));
::viewData()
{
// navigate to another page here.
// note: ui.stackedWidget->setCurrentIndex(3); is not accessible here!
}
это на самом деле помогает держать пользовательский интерфейс рядовым в дочерних страниц и возвращая их через публичный геттер. +1, но не решает мою проблему: это также означает, что мне придется обрабатывать весь код, связанный с определенным классом (page1Widget, page2Widget, ..) в mainWindow, и поэтому мне нужно будет получить доступ ко всем другим кнопкам и виджетам в другой класс также через getter .., что очевидно сделает мой mainWindow почти все обрабатывает все, включая все представления и т. д. Я бы хотел обработать логику pageWidged в своих файлах и использовать mainWindow для навигации – PathOfNeo
Я почти уверен, что есть Qt способ сделать корыто излучающий сигнал ... но я не уверен, как .. и у меня нет времени читать книгу ... все обучение осуществляется через личный проект. thx alot – PathOfNeo
Уверен, что это не будет отличным решением, если у вас есть множество кнопок в виджетах, которым необходимо иметь доступ к стеку, но вы все равно можете позволить виджетам обрабатывать все остальное самостоятельно! Другое решение, о котором я думаю, состоит в том, чтобы помещать на каждой странице переменную-член, которая указывает на QStackedWidget. Вам просто нужно инициализировать его в главном окне, а затем вы можете обрабатывать все из виджетов страницы – fenouil