@@ -459,6 +459,8 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
459459 }
460460
461461 ui->splitter ->restoreState (settings.value (" PeersTabSplitterSizes" ).toByteArray ());
462+ m_peer_widget_header_state = settings.value (" PeersTabPeerHeaderState" ).toByteArray ();
463+ m_banlist_widget_header_state = settings.value (" PeersTabBanlistHeaderState" ).toByteArray ();
462464
463465 constexpr QChar nonbreaking_hyphen (8209 );
464466 const std::vector<QString> CONNECTION_TYPE_DOC{
@@ -523,6 +525,9 @@ RPCConsole::~RPCConsole()
523525 QSettings settings;
524526 settings.setValue (" RPCConsoleWindowGeometry" , saveGeometry ());
525527 settings.setValue (" PeersTabSplitterSizes" , ui->splitter ->saveState ());
528+ settings.setValue (" PeersTabPeerHeaderState" , m_peer_widget_header_state);
529+ settings.setValue (" PeersTabBanlistHeaderState" , m_banlist_widget_header_state);
530+
526531 m_node.rpcUnsetTimerInterface (rpcTimerInterface);
527532 delete rpcTimerInterface;
528533 delete ui;
@@ -612,9 +617,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
612617 ui->peerWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
613618 ui->peerWidget ->setSelectionMode (QAbstractItemView::ExtendedSelection);
614619 ui->peerWidget ->setContextMenuPolicy (Qt::CustomContextMenu);
615- ui->peerWidget ->setColumnWidth (PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
616- ui->peerWidget ->setColumnWidth (PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
617- ui->peerWidget ->setColumnWidth (PeerTableModel::Ping, PING_COLUMN_WIDTH);
620+
621+ if (!ui->peerWidget ->horizontalHeader ()->restoreState (m_peer_widget_header_state)) {
622+ ui->peerWidget ->setColumnWidth (PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
623+ ui->peerWidget ->setColumnWidth (PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
624+ ui->peerWidget ->setColumnWidth (PeerTableModel::Ping, PING_COLUMN_WIDTH);
625+ }
618626 ui->peerWidget ->horizontalHeader ()->setStretchLastSection (true );
619627
620628 // create peer table context menu actions
@@ -655,8 +663,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
655663 ui->banlistWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
656664 ui->banlistWidget ->setSelectionMode (QAbstractItemView::SingleSelection);
657665 ui->banlistWidget ->setContextMenuPolicy (Qt::CustomContextMenu);
658- ui->banlistWidget ->setColumnWidth (BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
659- ui->banlistWidget ->setColumnWidth (BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
666+
667+ if (!ui->banlistWidget ->horizontalHeader ()->restoreState (m_banlist_widget_header_state)) {
668+ ui->banlistWidget ->setColumnWidth (BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
669+ ui->banlistWidget ->setColumnWidth (BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
670+ }
660671 ui->banlistWidget ->horizontalHeader ()->setStretchLastSection (true );
661672
662673 // create ban table context menu action
@@ -1186,6 +1197,11 @@ void RPCConsole::showEvent(QShowEvent *event)
11861197
11871198void RPCConsole::hideEvent (QHideEvent *event)
11881199{
1200+ // It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1201+ // the columns of QTableView child widgets will have zero width at that moment.
1202+ m_peer_widget_header_state = ui->peerWidget ->horizontalHeader ()->saveState ();
1203+ m_banlist_widget_header_state = ui->banlistWidget ->horizontalHeader ()->saveState ();
1204+
11891205 QWidget::hideEvent (event);
11901206
11911207 if (!clientModel || !clientModel->getPeerTableModel ())
0 commit comments