【问题标题】:Area of tree displayed by QTreeView not expands to its parent widget?QTreeView 显示的树区域未扩展到其父窗口小部件?
【发布时间】: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

标签: c++ qt view model qtreeview


【解决方案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)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多