@@ -487,6 +487,9 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
487487 ui->splitter ->restoreState (settings.value (" RPCConsoleWidgetPeersTabSplitterSizes" ).toByteArray ());
488488 }
489489
490+ m_peer_widget_header_state = settings.value (" PeersTabPeerHeaderState" ).toByteArray ();
491+ m_banlist_widget_header_state = settings.value (" PeersTabBanlistHeaderState" ).toByteArray ();
492+
490493 constexpr QChar nonbreaking_hyphen (8209 );
491494 const std::vector<QString> CONNECTION_TYPE_DOC{
492495 tr (" Inbound: initiated by peer" ),
@@ -570,6 +573,9 @@ RPCConsole::~RPCConsole()
570573 settings.setValue (" RPCConsoleWidgetPeersTabSplitterSizes" , ui->splitter ->saveState ());
571574 }
572575
576+ settings.setValue (" PeersTabPeerHeaderState" , m_peer_widget_header_state);
577+ settings.setValue (" PeersTabBanlistHeaderState" , m_banlist_widget_header_state);
578+
573579 m_node.rpcUnsetTimerInterface (rpcTimerInterface);
574580 delete rpcTimerInterface;
575581 delete ui;
@@ -658,9 +664,12 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
658664 ui->peerWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
659665 ui->peerWidget ->setSelectionMode (QAbstractItemView::ExtendedSelection);
660666 ui->peerWidget ->setContextMenuPolicy (Qt::CustomContextMenu);
661- ui->peerWidget ->setColumnWidth (PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
662- ui->peerWidget ->setColumnWidth (PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
663- ui->peerWidget ->setColumnWidth (PeerTableModel::Ping, PING_COLUMN_WIDTH);
667+
668+ if (!ui->peerWidget ->horizontalHeader ()->restoreState (m_peer_widget_header_state)) {
669+ ui->peerWidget ->setColumnWidth (PeerTableModel::Address, ADDRESS_COLUMN_WIDTH);
670+ ui->peerWidget ->setColumnWidth (PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH);
671+ ui->peerWidget ->setColumnWidth (PeerTableModel::Ping, PING_COLUMN_WIDTH);
672+ }
664673 ui->peerWidget ->horizontalHeader ()->setStretchLastSection (true );
665674 ui->peerWidget ->setItemDelegateForColumn (PeerTableModel::NetNodeId, new PeerIdViewDelegate (this ));
666675
@@ -683,8 +692,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
683692 ui->banlistWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
684693 ui->banlistWidget ->setSelectionMode (QAbstractItemView::SingleSelection);
685694 ui->banlistWidget ->setContextMenuPolicy (Qt::CustomContextMenu);
686- ui->banlistWidget ->setColumnWidth (BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
687- ui->banlistWidget ->setColumnWidth (BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
695+
696+ if (!ui->banlistWidget ->horizontalHeader ()->restoreState (m_banlist_widget_header_state)) {
697+ ui->banlistWidget ->setColumnWidth (BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
698+ ui->banlistWidget ->setColumnWidth (BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
699+ }
688700 ui->banlistWidget ->horizontalHeader ()->setStretchLastSection (true );
689701
690702 // create ban table context menu
@@ -1190,6 +1202,11 @@ void RPCConsole::showEvent(QShowEvent *event)
11901202
11911203void RPCConsole::hideEvent (QHideEvent *event)
11921204{
1205+ // It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1206+ // the columns of QTableView child widgets will have zero width at that moment.
1207+ m_peer_widget_header_state = ui->peerWidget ->horizontalHeader ()->saveState ();
1208+ m_banlist_widget_header_state = ui->banlistWidget ->horizontalHeader ()->saveState ();
1209+
11931210 QWidget::hideEvent (event);
11941211
11951212 if (!clientModel || !clientModel->getPeerTableModel ())
0 commit comments