知识点:
QTreeWidget
QTreeWidgetItem
QDockWidget
QVBoxLayout
- Qt的界面布局中使用了层的概念,layout,当主窗口改变后,窗口中控件尺寸随之改变,对于layout需要设置margin。
- QTreeWidget的基本元素是QTreeWidgetItem,
- QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
//familyItem为styleItem的父节点,QT中所有的窗口控件都是这种方式构造的~
效果图:
核心代码如下:
vboxLayout = new QVBoxLayout(dockWidgetContents);
vboxLayout->setSpacing(60);
vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
mTree = new QTreeWidget(dockWidgetContents);
mTree->setObjectName(QString::fromUtf8("scene"));
mTree->setSelectionMode(QAbstractItemView::ExtendedSelection);
vboxLayout->addWidget(mTree);
dockWidget->setWidget(dockWidgetContents);
this->addDockWidget(static_cast<Qt::DockWidgetArea>(1), dockWidget);
mTree->setColumnCount(1);
mTree->setHeaderLabels(QStringList() << tr("Scene"));
mTree->setSelectionMode(QAbstractItemView::ExtendedSelection);
// Demonstrating look and feel features
mTree->setAnimated(true);
mTree->setIndentation(20);
mTree->setSortingEnabled(false);
//----------------------------------
QTreeWidgetItem *familyItem = new QTreeWidgetItem(mTree);
familyItem->setText(0, QString("MyFamily"));
//familyItem->setCheckState(0, Qt::Unchecked);
QString treeItems[5] = {"One","Two", "Three", "Four", "Five"};
for (int i(0); i<5; i++)
{
QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
styleItem->setText(0, treeItems[i]);
if (i%2)
styleItem->setIcon(0, QIcon("gift.png"));
else
styleItem->setIcon(0, QIcon("gift1.png"));
//styleItem->setCheckState(0, Qt::Unchecked);
//styleItem->setData(0, Qt::UserRole, QVariant(i));
for (int j(0); j<=i; j++)
{
QTreeWidgetItem *childItem = new QTreeWidgetItem(styleItem);
childItem->setText(0, "apple");
childItem->setIcon(0, QIcon("treeItem.png"));
}
}
//----------------------------------