QTreeView 显示的树区域未扩展到其父窗口小部件?
Posted
技术标签:
【中文标题】QTreeView 显示的树区域未扩展到其父窗口小部件?【英文标题】:Area of tree displayed by QTreeView not expands to its parent widget? 【发布时间】:2013-03-17 03:14:29 【问题描述】:我使用QTreeView
和QStandardItemModel
在tree 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 显示的树区域未扩展到其父窗口小部件?的主要内容,如果未能解决你的问题,请参考以下文章