QTreeview,实现:当前选中行字体变成蓝色,给出C++完整示例
时间: 2024-02-06 15:04:46 浏览: 103
以下是一个简单的QTreeView实现,支持当前选中行字体变成蓝色的效果:
```cpp
#include <QApplication>
#include <QTreeView>
#include <QStandardItemModel>
#include <QStandardItem>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStandardItemModel model;
QStandardItem *root = model.invisibleRootItem();
QStandardItem *item1 = new QStandardItem("Item 1");
QStandardItem *item2 = new QStandardItem("Item 2");
QStandardItem *item3 = new QStandardItem("Item 3");
root->appendRow(item1);
root->appendRow(item2);
root->appendRow(item3);
QTreeView view;
view.setModel(&model);
view.setSelectionBehavior(QAbstractItemView::SelectRows);
view.setSelectionMode(QAbstractItemView::SingleSelection);
view.setEditTriggers(QAbstractItemView::NoEditTriggers);
view.viewport()->setFocusPolicy(Qt::NoFocus);
view.setStyleSheet("QTreeView::item:selected { color: blue; }");
QObject::connect(&view, &QTreeView::clicked, [&view](const QModelIndex &index){
view.selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);
});
view.show();
return a.exec();
}
```
以上代码实现了一个简单的QTreeView控件,当用户选中某一行时,选中行的字体颜色会变成蓝色。具体实现是,设置QTreeView的选择行为为按行选择,选择模式为单选,禁止编辑,去掉焦点框,并设置选中行的字体颜色为蓝色。同时,在QTreeView的clicked事件中,手动设置选中的行,以便触发字体颜色的变化。
阅读全文