QStackedWidget navigation d'une page à
Je pense que je vais avoir assez de base de Qt problème, mais je ne peux pas la comprendre:
J'ai un QMainWindow qui est titulaire d'un QStackedWidget. La totalité de la page des widgets il y a séparer les classes dérivées de QWidget.
Donc:
QMainWindow implémente QStacked Fenêtre dans une classe.
Toutes les autres pages à l'intérieur de la pile de widget sont ajoutés des classes et tous ont leur propre .l'interface utilisateur rempli avec des boutons et des listes à travers le Designer.
Pour la navigation sur les différentes pages, à l'intérieur de la Mainwindow j'ai accès à: ui.stackedWidget->setCurrentIndex(2);
Il semble que je n'ai pas accès à l'interface utilisateur.stackedWidget sur une autre page à l'intérieur de la pile de widget? Je n'ai pas accès à l'interface utilisateur.stackedWidget parce que l'Interface utilisateur est un membre privé dans la classe mainwindow. (généré automatiquement par Qt - à l'aide de VS addon pour l'ajout de QT4 classes)
Je voudrais savoir, comment puis-je passer à une autre page dans le bac de widget, en cliquant sur un bouton qui appartient à une autre page à l'intérieur de ce widget?
Remarque:
Toutes les pages sont ajoutées à la StackedWidget dans mainWIndow constructeur:
ui.stackedWidget->addWidget(page1Widget);
ui.stackedWidget->addWidget(page2Widget);
//etc..
Exemple d'un clic sur un bouton signal-slot à l'intérieur de page1Widget:
connect(ui.btnViewData, SIGNAL(clicked()), this, SLOT(viewData()));
::viewData()
{
//navigate to another page here.
//note: ui.stackedWidget->setCurrentIndex(3); is not accessible here!
}
OriginalL'auteur PathOfNeo | 2013-02-24
Vous devez vous connecter pour publier un commentaire.
Je crois que le fait de mettre votre connect() et viewData() fonctions au sein de votre QMainWindow objet permettra de résoudre votre problème, depuis la fenêtre principale peut avoir accès à la fois les signaux rependu par les widgets enfants et les QStackedWidget éléments.
Vous pourriez avoir besoin d'écrire une Interface de lecture pour chacune de vos page, puis faire quelque chose comme
espérons que cela aide,
cheers
Je suis à peu près sûr qu'il y est une Qt façon de faire de l'auge émettant le signal..mais je ne suis pas sûr de savoir comment.. et je n'ai pas le temps de lire un livre..tout apprentissage se fait à travers un projet personnel. merci beaucoup
Sûr que ce ne serait pas une excellente solution si vous avez beaucoup de boutons dans les widgets qui ont besoin d'avoir accès à la pile, mais vous pouvez toujours laisser les widgets occupons de tout sur leurs propres! L'autre solution, je pense, est de mettre dans chaque page d'un membre de la variable qui pointe vers le QStackedWidget. Il vous suffit de l'initialiser dans la fenêtre principale, puis vous pouvez tout gérer à partir de la page des widgets
OriginalL'auteur