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