2016-05-27 35 views
0

QTreeWidgetにはカスタムウィジェットが設定されています。私は、外部APIから項目の種類を取得します。テキスト値、数値などである可能性があります。 種類によって、私はQTreeWidgetItemに異なるコントロールを提供します。たとえば、テキスト入力の場合はQLabel、数値の場合はQSpinBoxなどです。QTreeWidgetの垂直行間隔

これは、次のコードを介して行われます:コードは動作しますが、結果としてTreeWidgetが問題ました

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 
    } 
} 
} 

:結果TreeWidgetItemが行う間隔をたくさん

enter image description here

を持っていますTreeWidgetは視覚的に読み込み/反復が難しい。アイテムを縮小するQSizePolicyのようなものを提供するためのすばやく簡単な方法はありますか?私はあらゆる組み合わせを試みましたが、これまでのところ何も働いていませんでした。

+0

あなたは 'verticalHeaderDefaultSectionSize'を設定しようとしましたか? –

+0

いいえ、詳しく教えてください。私はその物件に関する確かな情報は見つかりませんでした。 – Hafnernuss

+0

これはデザイナで 'verticalHeaderDefaultSectionSize'と呼ばれています。コードではおそらく' table-> verticalHeader-> setDefaultSectionSize(...) 'を使用する必要があります –

答えて

1

レイアウトでウィジェットを使用しているので、より小さい/適切な値(デフォルトでは、ドキュメントの内容にかかわらず、各エッジに6ピクセル)でレイアウトにsetContentsMarginsを呼び出してください。

関連する問題