看下文档描述先
enum Qt::ItemFlag
flags Qt::ItemFlags
This enum describes the properties of an item:
Constant | Value | Description |
---|---|---|
Qt::NoItemFlags | 0 | It does not have any properties set. |
Qt::ItemIsSelectable | 1 | It can be selected. |
Qt::ItemIsEditable | 2 | It can be edited. |
Qt::ItemIsDragEnabled | 4 | It can be dragged. |
Qt::ItemIsDropEnabled | 8 | It can be used as a drop target. |
Qt::ItemIsUserCheckable | 16 | It can be checked or unchecked by the user. |
Qt::ItemIsEnabled | 32 | The user can interact with the item. |
Qt::ItemIsTristate | 64 | The item is checkable with three separate states. |
Note that checkable items need to be given both a suitable set of flags and an initial state, indicating whether the item is checked or not. This is handled automatically for model/view components, but needs to be explicitly set for instances of QListWidgetItem,QTableWidgetItem, and QTreeWidgetItem.
The ItemFlags type is a typedef for QFlags<ItemFlag>. It stores an OR combination of ItemFlag values.
注意最后一句,ItemFlags存储的是几个ItemFlag的逻辑或的结果。
所以设置某个Item可编辑时,可以item->setFlags(Qt::ItemIsEditable |Qt::ItemIsEnabled);
QTreeWidget中设置字体颜色
QTreeWidget *A = new QTreeWidget;
QTreeWidgetItem *child=new QTreeWidgetItem(QStringList(tr(portDesAndName.c_str())));
/*蓝色表示正在工作*/
child->setForeground(0,QBrush(QColor(Qt::blue)));
A->addChild(child);
通常代码格式如下:
ui.treeWidget->setObjectName("treeWidget");
ui.treeWidget->setStyleSheet("QWidget#treeWidget{background-image: url(./pic/netJiedianBg.png);}");
但是,实际情况并不像我们想象的那么乐观,例如以下设计好的图片

我们在实际实现时,如果只使用上面的代码后的实际情况是如下所示

可以看到最上面有一条其实还是默认的颜色,这个就需要我们再单独设置其背景图片
首先要把那个横条返回,其实就是Treewidget的Header,然后对返回到Header设置背景即可,方法可能有多种,把Header作为一个Widget使用样式表加图片的方法不知道为什么不行,所以换了种方法,在header里添加一个label,然后设置其布局充满整个HEADER,在label上加图片。经过试验是可以的。
代码如下:
QHeaderView *headview = ui.treeWidget->header();
QLabel *label = new QLabel("aaa");
label->setPixmap(QPixmap("./pic/netJiedian.png"));
QHBoxLayout *lay = new QHBoxLayout;
lay->setMargin(0);
lay->addWidget(label);
headview->setLayout(lay);
添完后的效果图如下:

获得Qtreewidget 上双击的那行的数据简单demo
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->treeWidget->setColumnCount(1);
QTreeWidgetItem *root=new QTreeWidgetItem(ui->treeWidget,QStringList(QString("ROOST")));
QTreeWidgetItem *leaf=new QTreeWidgetItem(root,QStringList(QString("children")));
root->addChild(leaf);
QTreeWidgetItem *leaf1=new QTreeWidgetItem(root,QStringList(QString("children1")));
root->addChild(leaf1);
QTreeWidgetItem *leaf2=new QTreeWidgetItem(root,QStringList(QString("children2")));
root->addChild(leaf2);
QTreeWidgetItem *leaf3=new QTreeWidgetItem(root,QStringList(QString("children3")));
root->addChild(leaf3);
QList<QTreeWidgetItem *>rootList;
rootList<<root;
ui->treeWidget->insertTopLevelItems(0,rootList);
}
在
private slots:
void on_treeWidget_doubleClicked(QModelIndex index);
void MainWindow::on_treeWidget_doubleClicked(QModelIndex index)
{
index=ui->treeWidget->currentIndex();
ui->lineEdit->setText(index.data().toString());
}