def create_table_view(self, table_model, table_title, close_callback=None): # construct the top level widget widget = QWidget() # construct the top level layout layout = QVBoxLayout(widget) tableView = QTableView() tableView.setAlternatingRowColors(True) # Add table to box layout layout.addWidget(tableView) # set the layout on the widget widget.setLayout(layout) sub = self.add_subwindow( widget, ModelInfo(self.app_manager.model, cmds.update_table_view, (tableView, ))) sub.setWindowTitle(table_title) sub.installEventFilter(self) tableView.setModel(table_model) tableView.setMinimumWidth(tableView.horizontalHeader().length() + tableView.horizontalHeader().height()) # The following line should work but returns 0 # tableView.verticalHeader().width()) view_width = tableView.width() view_ht = tableView.height() orig_x, orig_y = self.initial_window_offset() sub.setGeometry(orig_x, orig_y, view_width, view_ht) # table data updated successfully table_model.update.connect(self.on_data_changed) sub.show() return sub