我正在使用 QTreeView 来显示信息,我希望它占据主窗口的整个客户区域(减去其菜单、工具栏和状态栏的区域)。当主窗口调整大小时,QTreeView 也应该调整大小。
我的 MainWindow 类(从 QMainWindow 派生)实现 resizeEvent() 如下:
void MainWindow::resizeEvent( QResizeEvent * event )
{
List->resize( event->size().width(), event->size().height() - statusBar()->size().height() );
QMainWindow::resizeEvent( event );
}
List是一个在MainWindow类的构造函数中初始化的QTreeView指针:
List = ui->centralwidget->findChild<QTreeView*>( "ElementView" );
我没有看到 QTreeView 的任何大小调整。我也尝试过,没有调整状态栏的高度。
我还尝试为centralwidget而不是QTreeView调用resize(),以及为QTreeView和centralwidget调用它,但几乎没有任何变化。我说“几乎”是因为改变的一件事是,当主窗口调整大小时,最初出现的 QTreeView 垂直滚动条(因为有超过一个充满信息的屏幕)将消失,即使它仍然是需要。
QMainWindow 中的 QTreeView 的大小调整似乎没有按预期运行。确保为您的中央小部件正确设置布局管理系统。您可能会考虑使用布局(例如,QVBoxLayout 或 QHBoxLayout)来管理中央小部件中 QTreeView 的放置和大小调整。这将允许它在调整主窗口大小时自动调整,而不需要在 resizeEvent 函数中显式调整大小调用。,.
谢谢