Lire le code source.
Dans ce cas, lisez QPrintPreviewDialog
le code source pour voir comment il le fait. Cette boîte de dialogue standard comporte des boutons de navigation et un affichage de page en cours, ce qui fait que vous faites ce que vous voulez (c'est-à-dire si j'ai vraiment compris ce que vous voulez accomplir). Les méthodes que vous cherchez sont les suivantes (src/IUG/dialogues/qprintpreviewdialog.cpp):
void QPrintPreviewDialogPrivate::_q_previewChanged()
void QPrintPreviewDialogPrivate::_q_navigate(QAction* action)
void QPrintPreviewDialogPrivate::updateNavActions()
Fondamentalement, _q_previewChanged()
est reliée au signal QPrintPreviewWidget::previewChanged()
. Lorsqu'il est émis, le numéro de page est mis à jour avec les informations acquises de QPrintPreviewWidget::currentPage()
et QPrintPreviewWidget::pageCount()
.
En ce qui concerne l'extension du comportement de QPrintPreviewWidget
vous pouvez essayer deux approches, deux d'entre eux ne nécessitent pas une version adaptée de Qt:
Extend QPrintPreviewWidget
Dans le constructeur, accéder au layout()
(il est un QVBoxLayout qui est utilisé interanally), ajoutez le widget pied de page, connectez le signal previewChanged()
à un emplacement qui met à jour le numéro de page et être fait. Le problème avec cette approche est qu'elle compte sur la mise en page pour être présente et être un QVBoxLayout
. Comme c'est en quelque sorte privé, il peut rompre avec les versions plus récentes.
Créer une nouvelle classe extension QWidget
ou QFrame
Si vous ne souhaitez pas que votre widget pour être un QPrintPreviewWidget
, il suffit de créer une nouvelle classe dérivée QWidget
et ajouter le widget aperçu avant impression et le pied de page à une mise en page , connecte les emplacements, etc. Utilisez votre widget dérivé au lieu de QPrintPreviewWidget
. Maintenant, si vous voulez modifier le comportement du widget sur les binaires déjà déployés, les choses deviennent plus laides. Je ne peux pas aider dans ce cas.
Ouais c'est ce que j'ai pensé. newPage() n'est pas virtuel, et même si c'était le cas, je ne serais pas capable d'injecter ma classe dans la hiérarchie d'aperçu avant impression. Merci quand même! – EightyEight