Skip to content

Stacked Widget Utilities

View caching and navigation utilities for QStackedWidget.

Quick Start

from src.custom_widgets.widget_handlers.stacked_widget.view_cache_manager import (
    ViewCacheManager,
    cache_and_show_widget,
    restore_cached_widget,
)

# Navigate to new view while caching current
cached_widget, cached_index = cache_and_show_widget(
    stacked_widget,
    new_detail_view,
    cache_current=True,
)

# Later: navigate back, restoring cached view
restore_cached_widget(
    stacked_widget,
    cached_widget,
    cached_index,
    remove_current=True,
)

# Replace widget while keeping old cached
old_widget, old_index = ViewCacheManager.replace_widget_with_caching(
    stacked_widget,
    old_view,
    new_view,
)

# Debug: inspect stack state
info = ViewCacheManager.get_cache_info(stacked_widget)
print(f"Total widgets: {info['total_widgets']}")

Use Cases

  • Navigation with back button: Cache list view when opening detail view
  • Preserving form state: Keep unsaved changes when navigating away
  • Performance: Avoid recreating expensive widgets on navigation

Files

File Purpose
view_cache_manager.py ViewCacheManager class and convenience functions

API

Functions

Function Purpose
cache_and_show_widget() Show new widget, cache current
restore_cached_widget() Restore cached widget, optionally remove current
replace_widget_with_caching() Replace widget while caching old

ViewCacheManager Methods

Method Purpose
cache_and_show_widget() Static method for caching and showing
restore_cached_widget() Static method for restoration
replace_widget_with_caching() Static method for replacement
cleanup_cached_widgets() Delete list of cached widgets
get_cache_info() Debug info about stack state

What Belongs Here

Put here: - QStackedWidget navigation utilities - View state management - Widget caching strategies

Do NOT put here: - Other widget type utilities - Business logic