QTreeView 显示的树区域未扩展到其父窗口小部件?

Posted

技术标签:

【中文标题】QTreeView 显示的树区域未扩展到其父窗口小部件?【英文标题】:Area of tree displayed by QTreeView not expands to its parent widget? 【发布时间】:2013-03-17 03:14:29 【问题描述】:

我使用QTreeViewQStandardItemModeltree view 中显示其内容(从xml 文件中读取)。文件解析器工作正常,但是当我使用视图显示数据时,sizePolicy 就不起作用了。 为什么?如何让树的面积扩大? (如下图所示,哪个树视图没有展开?)

展示树的图片:

代码(已编辑以添加“布局”部分,但也不起作用。):

...
QStandardItemModel *model = new QStandardItemModel();
preOrder(doc.firstChild(), model);
view = new QTreeView(pageDetails);
view->setModel(model);

model->setHorizontalHeaderLabels(QStringList(""));

QHBoxLayout* lay=new QHBoxLayout(pageDetails);
lay->setContentsMargins(0, 0, 0, 0);
lay->addWidget(view);
view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
pageDetails->setLayout(lay);

view->show();

【问题讨论】:

您是否将QTreeView 添加到父窗口小部件的布局中? @user2155932 如何添加? 看here @user2155932,查看编辑。 您还应该使用您创建的布局在父窗口小部件上调用QWidget::setLayout 【参考方案1】:

我的问题现在解决了:

但是还是不知道怎么去掉header...问题是Qt Designer引起的。我用它来添加父widget ui,但是设置成水平的设计器中的布局(有点难找)。 我只是不知道为什么上面的代码在这种情况下不起作用。

PS: 如果我留下代码注释:

//QHBoxLayout* lay=new QHBoxLayout(pageDetails);
//lay->setContentsMargins(0, 0, 0, 0);
//lay->addWidget(view);
//view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
//pageDetails->setLayout(lay);

出现:

PS2: 成功删除标题!: 评论model->setHorizontalHeaderLabels(QStringList("")); 添加view->header()->setVisible(false);

【讨论】:

view->setHeaderHidden(false)

以上是关于QTreeView 显示的树区域未扩展到其父窗口小部件?的主要内容,如果未能解决你的问题,请参考以下文章

自定义 QTreeView 项目

将复选框列添加到树左侧的 QTreeView 的方法?

QTreeView 总是显示相同的数据

2370 小机房的树

codevs 2370 小机房的树

在固定区域中具有可变内容和控制按钮的表单