QTreeWidget中的垂直行间距

时间:2016-05-27 07:58:44

标签: c++ qt qtreewidget qtreewidgetitem

我有一个QTreeWidget,其中填充了自定义小部件。我从外部API检索项类型,它可能是文本值,数值或其他。 根据类型,我为QTreeWidgetItem提供了不同的控件。例如,QLabel用于文本输入,QSpinBox用于数值,依此类推。

这可以通过以下代码完成:

for (GenApi::INode * poNode : oNodeList)  // iterate over a list of items   which i want to represent in the treewidget 
{
QTreeWidgetItem * poRootItem = new QTreeWidgetItem(poTree); //poTree is a   QTreeWidget
poRootItem->setText(0, poNode->GetDisplayName().c_str());
poTree->addTopLevelItem(poRootItem);                        // add as category

GenApi::NodeList_t oInnerNodes;
poNode->GetChildren(oInnerNodes);

for (GenApi::INode * poInnerNode : oInnerNodes)             // each of those nodes may have innter child nodes
{
    QTreeWidgetItem * poItem = new QTreeWidgetItem();
    CNodeItemBase * poNodeUI = NULL;

    if (GenApi::CIntegerPtr(poInnerNode) != NULL)
        poNodeUI = new CNodeItemInteger(*poInnerNode, poTree);  //CNodeItem... inherits from QWidget and takes the tree as parent

    else if (GenApi::CStringPtr(poInnerNode) != NULL)
        poNodeUI = new CNodeItemString(*poInnerNode, poTree);

    // more possibilities go here....

    if (poNodeUI != NULL)
    {
        poRootItem->addChild(poItem);
        poItem->setText(0, poNodeUI->GetDisplayName().c_str());  // set text of the item
        poTree->setItemWidget(poItem, 1, poNodeUI->m_poControl); // set label/spinbox as widget of the treeitem  
    }
}
}

代码有效,但生成的TreeWidget存在问题:

enter image description here

生成的TreeWidgetItem有很多间距,这使得TreeWidget难以直观地读取/迭代。有没有一种快速简便的方法来提供缩小物品的QSizePolicy?我尝试过各种组合,但迄今为止没有任何效果。

1 个答案:

答案 0 :(得分:1)

由于您正在使用带有布局的小部件,因此请务必使用较小/适当的值在布局上调用setContentsMargins(默认情况下,每个边缘都有六个像素,不管文档说的是什么)。< / p>

相关问题