QTreeView使用總結2,常用API介紹
1,簡介
上一篇展示了一個最簡單的QTreeView示例,只是剛剛能顯示資料而已。
實際使用中,需要對QTreeView的各項屬性進行配置,下面介紹一下常用設定項。
先看最終效果:
2,QTreeView常用設定項
void MainWindow::InitTree()
{
//1,QTreeView常用設定項
QTreeView* t = ui->treeView;
t->setEditTriggers(QTreeView::NoEditTriggers); //單元格不能編輯
t->setSelectionBehavior(QTreeView::SelectRows); //一次選中整行
t->setSelectionMode(QTreeView::SingleSelection); //單選,配合上面的整行就是一次選單行
t->setAlternatingRowColors(true); //每間隔一行顏色不一樣,當有qss時該屬性無效
t->setFocusPolicy(Qt::NoFocus); //去掉滑鼠移到單元格上時的虛線框
//2,列頭相關設定
// t->header()->hide(); //隱藏列頭
t->header()->setStretchLastSection(true); //最後一列自適應寬度
t->header()->setDefaultAlignment(Qt::AlignCenter); //列頭文字預設居中對齊
//3,構造Model
QStandardItemModel* model = new QStandardItemModel(ui->treeView);
model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("序號") << QStringLiteral("名稱")); //設定列頭
for(int i=0;i<5;i++)
{
//一級節點,加入mModel
QList<QStandardItem*> items1;
QStandardItem* item1 = new QStandardItem(QString::number(i));
QStandardItem* item2 = new QStandardItem(QStringLiteral("一級節點"));
items1.append(item1);
items1.append(item2);
model->appendRow(items1);
for(int j=0;j<5;j++)
{
//二級節點,加入第1個一級節點
QList<QStandardItem*> items2;
QStandardItem* item3 = new QStandardItem(QString::number(j));
QStandardItem* item4 = new QStandardItem(QStringLiteral("二級節點"));
items2.append(item3);
items2.append(item4);
item1->appendRow(items2);
for(int k=0;k<5;k++)
{
//三級節點,加入第1個二級節點
QList<QStandardItem*> items3;
QStandardItem* item5 = new QStandardItem(QString::number(k));
QStandardItem* item6 = new QStandardItem(QStringLiteral("三級節點"));
items3.append(item5);
items3.append(item6);
item3->appendRow(items3);
}
}
}
//4,應用model
t->setModel(model);
//一些項在應用model後設定
//5,設第一列初始寬度;第一列固定寬度
t->header()->resizeSection(0,100);
t->header()->setSectionResizeMode(0,QHeaderView::Fixed);
//6,預設選中一級節點的第一行
QModelIndex rootIndex = t->rootIndex();
QModelIndex selIndex = model->index(0,0,rootIndex);
t->setCurrentIndex(selIndex);
}
3,說明
QTreeView常用介面:
1,setEditTriggers:設定單元格是否可編輯、如何操作來編輯。
引數含義為:
enum EditTrigger {
NoEditTriggers = 0, //不可編輯
CurrentChanged = 1, //任何時候都能對單元格修改
DoubleClicked = 2, //雙擊單元格
SelectedClicked = 4, //單擊已選中的內容
EditKeyPressed = 8, //鍵盤的編輯鍵,如F2
AnyKeyPressed = 16, //按下任意鍵就能修改
AllEditTriggers = 31 //以上條件全包括
};
2,setSelectionBehavior:設定以單個單元格、還是一行、一列方式選擇
引數含義為:
enum SelectionBehavior {
SelectItems, //選中單個單元格
SelectRows, //選中一行
SelectColumns //選中一列
};
3,setSelectionMode:設定單選、多選
enum SelectionMode {
NoSelection, //不能選擇
SingleSelection, //單選
MultiSelection, //多選,不用按ctrl鍵即可多選,選擇新項時不取消之前選擇,已選中的再選擇會取消選擇
ExtendedSelection, //多選,按ctrl、shift鍵多選,選擇新項時取消之前選擇
ContiguousSelection //多選,需要按ctrl或shift都是shift選中效果,即選中兩次點選之間的所有元素
};
4,setAlternatingRowColors:設定每間隔一行,背景色不同,如圖
5,setFocusPolicy(Qt::NoFocus) ; // 常用來取消單元格的虛線框
6,t->header()->setStretchLastSection(true); //最後一列自適應寬度
7,t->header()->setDefaultAlignment(Qt::AlignCenter); //列頭文字預設居中對齊
8,//設第一列初始寬度;第一列固定寬度
t->header()->resizeSection(0,100);
t->header()->setSectionResizeMode(0,QHeaderView::Fixed);
9,//,預設選中一級節點的第一行
QModelIndex rootIndex = t->rootIndex();
QModelIndex selIndex = model->index(0,0,rootIndex);
t->setCurrentIndex(selIndex);
相關文章
- 常用 API 演算法介紹API演算法
- Ambari 常用的 REST API 介紹RESTAPI
- phaser常用API總結API
- java常用Api總結JavaAPI
- ChatGPT API使用介紹ChatGPTAPI
- Tengine 常用模組使用介紹
- JavaScript 操作 DOM 常用 API 總結JavaScriptAPI
- Javascript操作DOM常用API總結JavaScriptAPI
- QTreeView使用總結14,自定義model,控制對齊和顏色QTView
- java .stream(). 使用介紹 Streams APIJavaAPI
- (2)Docker常用命令介紹Docker
- 前端開發常用cdn,api總結前端API
- C#總結(二)事件Event 介紹總結C#事件
- Flutter 介紹 & 經驗總結Flutter
- MySQL 分割槽介紹總結MySql
- WebKit介紹及總結(一)WebKit
- Jenkins 常用 REST API介紹(Java 客戶端)JenkinsRESTAPIJava客戶端
- Web Storage API的介紹和使用WebAPI
- Redis介紹、使用、資料結構和叢集模式總結Redis資料結構模式
- openssl常用使用總結
- 2—-svn介紹和常用命令
- javascript字串常用api使用匯總(二)JavaScript字串API
- JCache API介紹API
- 常用API【2】API
- C#常用集合總結-2C#
- Java | 個人總結的Java常用API手冊彙總JavaAPI
- api日常總結:前端常用js函式和CSS常用技巧API前端JS函式CSS
- Android 常用佈局 介紹與使用Android
- RAID技術介紹和總結AI
- SAAJ API 介紹(未完)API
- BookKeeper 介紹(3)--APIAPI
- Jenkins api 介紹JenkinsAPI
- 最新生成新浪短連結API介面介紹API
- Quartz.net 3.x使用總結(一)——入門介紹quartz
- 常用排序演算法總結(2)排序演算法
- JavaScript常用物件介紹JavaScript物件
- Oracle 常用HINT介紹Oracle
- Redis | Redis常用命令及示例總結(API)RedisAPI