@@ -523,6 +523,9 @@ RPCConsole::~RPCConsole()
523523 QSettings settings;
524524 settings.setValue (" RPCConsoleWindowGeometry" , saveGeometry ());
525525 settings.setValue (" PeersTabSplitterSizes" , ui->splitter ->saveState ());
526+ settings.setValue (" PeersTabPeerHeaderState" , m_peer_widget_header_state);
527+ settings.setValue (" PeersTabBanlistHeaderState" , m_banlist_widget_header_state);
528+
526529 m_node.rpcUnsetTimerInterface (rpcTimerInterface);
527530 delete rpcTimerInterface;
528531 delete ui;
@@ -612,9 +615,14 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
612615 ui->peerWidget ->setSelectionBehavior (QAbstractItemView::SelectRows);
613616 ui->peerWidget ->setSelectionMode (QAbstractItemView::ExtendedSelection);
614617 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);
618+
619+ QSettings settings;
620+ m_peer_widget_header_state = settings.value (" PeersTabPeerHeaderState" ).toByteArray ();
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,12 @@ 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+ m_banlist_widget_header_state = settings.value (" PeersTabBanlistHeaderState" ).toByteArray ();
668+ if (!ui->banlistWidget ->horizontalHeader ()->restoreState (m_banlist_widget_header_state)) {
669+ ui->banlistWidget ->setColumnWidth (BanTableModel::Address, BANSUBNET_COLUMN_WIDTH);
670+ ui->banlistWidget ->setColumnWidth (BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
671+ }
660672 ui->banlistWidget ->horizontalHeader ()->setStretchLastSection (true );
661673
662674 // create ban table context menu action
@@ -1186,6 +1198,11 @@ void RPCConsole::showEvent(QShowEvent *event)
11861198
11871199void RPCConsole::hideEvent (QHideEvent *event)
11881200{
1201+ // It is too late to call QHeaderView::saveState() in ~RPCConsole(), as all of
1202+ // the columns of QTableView child widgets will have zero width at that moment.
1203+ m_peer_widget_header_state = ui->peerWidget ->horizontalHeader ()->saveState ();
1204+ m_banlist_widget_header_state = ui->banlistWidget ->horizontalHeader ()->saveState ();
1205+
11891206 QWidget::hideEvent (event);
11901207
11911208 if (!clientModel || !clientModel->getPeerTableModel ())
0 commit comments