QTreeWidget - 带小部件的列宽度

时间:2016-01-26 12:17:12

标签: qt qwidget qtreewidget qpushbutton

我有两列QTreeWidget。第一列是文本,第二列是QPushButton。我无法指定按钮的大小和第二列的大小。当您尝试设置内容列的大小时,第二列将消失。如何更改第二列的宽度?

tree_widget_->setColumnCount(2);
tree_widget_->header()->resizeSection(1, 10);
tree_widget_->header()->setStretchLastSection(false);
tree_widget_->header()->setResizeMode(0,QHeaderView::Stretch);
tree_widget_->topLevelItem(4)->addChild( wiop = new QTreeWidgetItem(QStringList() << QString( "Расстояние: %1 км" ).arg( range ) ) );
tree_widget_->setItemWidget(tree_widget_->topLevelItem(4)->child(0),1,range_plot_button_ = new QPushButton("График",tree_widget_));
range_plot_button_->resize(10,10);

2 个答案:

答案 0 :(得分:2)

tree_widget_->setColumnWidth(1, 10)应该做你想做的事。 当您将QTushWidget作为顶级项目分配给QTreeWidget时,QTreeWidget对象通常被指定为此按钮的父级,因此该按钮的所有几何都由其父级处理。 看看docs

如果您希望按钮具有布局(在列中)的自己的几何图形,您可以创建空白窗口小部件,将其设置为TreeWidget作为项目,并使您的按钮成为该空白窗口小部件的子项,具有所有便利性Qt。中的布局。

答案 1 :(得分:2)

我尝试setColumnWidth,但这不起作用。 稍后我试试tree_widget_->header()->setResizeMode(1,QHeaderView::ResizeToContents); 这是工作!