【1】QTableWidget簡介
QTableWidget是QT對話框設計中常用的顯示數據表格的控件。
學習QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一樣一樣的),因為QTableWidget繼承於類QTableView。
兩者主要區別是QTableView可以使用自定義的數據模型來顯示內容(也就意味着使用時先要通過setModel來綁定數據源),而QTableWidget則只能使用標准的數據模型。
QTableWidget單元格數據是QTableWidgetItem對象來實現的(即就是不需要數據源,單元格內的信息需要逐個填充即可)。
這主要由於QTableView類中有setModel成員函數,而到了QTableWidget類中,該成員函數變成了私有。
使用QTableWidget就離不開QTableWidgetItem。QTableWidgetItem用來表示表格中的其中一個單元格,整個表格都需要用逐個單元格對象QTableWidgetItem構建起來。
【2】QTableWidget控件屬性
(1)禁止編輯表格
在默認情況下,表格里的字符是可以更改的。
比如雙擊一個單元格,就可以修改原來的內容,如果想禁止用戶的這種操作,讓這個表格對用戶只讀,可以這樣:
1 ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
(2)設置表格為選擇整行
1 /*設置表格為整行選中*/
2 ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows);
(3)設置單個選中和多個選中
單個選中意味着每次只可以選中一個單元格,多個就是相當於可以選擇”一片“那種模式。
1 /*設置允許多個選中*/
2 ui.qtablewidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
(4)表格表頭的顯示與隱藏
對於水平或垂直方向的表頭,如果不想顯示可以用以下方式進行(隱藏/顯示)設置:
1 ui.qtablewidget->verticalHeader()->setVisible(true); 2 ui.qtablewidget->horizontalHeader()->setVisible(false);
(5)設置具體單元格中字體的對齊方式
1 ui.qtablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter);
(6)設置具體單元格中字體格式
1 ui.qtablewidget->item(1, 0)->setBackgroundColor(QColor(0,60,10)); 2 ui.qtablewidget->item(1, 0)->setTextColor(QColor(200,111,100)); 3 ui.qtablewidget->item(1, 0)->setFont(QFont("Helvetica"));
(7)設置具體單元格的值
1 ui.qtablewidget->setItem(1, 0, new QTableWidgetItem(str));
(8)把QTableWidgetItem對象內容轉換為QString
1 QString str =ui.qtablewidget->item(0, 0)->data(Qt::DisplayRole).toString();
(9)具體單元格中添加控件
1 QComboBox *comBox = new QComboBox(); 2 comBox->addItem("F"); 3 comBox->addItem("M"); 4 ui.qtablewidget->setCellWidget(0,3,comBox);
(11)合並單元格
1 //合並單元格的效果
2 ui.qtablewidget->setSpan(2, 2, 3, 2); 3 //第一個參數:要改變的單元格行數 4 //第二個參數:要改變的單元格列數 5 //第三個參數:需要合並的行數 6 //第四個參數:需要合並的列數
(12)具體單元格中插入圖片
ui.qtablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));
(13)設置顯示網格
ui.qtablewidget->setShowGrid(true);//顯示表格線
(14)設置滾動條
ui.qtablewidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滾動條
(15)設置列標簽
1 //初始化界面
2 QStringList HStrList; 3 HStrList.push_back(QString("name")); 4 HStrList.push_back(QString("id")); 5 HStrList.push_back(QString("age")); 6 HStrList.push_back(QString("sex")); 7 HStrList.push_back(QString("department")); 8
9
10 //設置行列數(只有列存在的前提下,才可以設置列標簽)
11 int HlableCnt = HStrList.count(); 12 ui.qtablewidget->setRowCount(10); 13 ui.qtablewidget->setColumnCount(HlableCnt); 14
15 //設置列標簽
16 ui.qtablewidget->setHorizontalHeaderLabels(HStrList);
(16)設置行和列的大小設為與內容相匹配
1 ui.qtablewidget->resizeColumnsToContents(); 2 ui.qtablewidget->resizeRowsToContents();
(17)設置字體
ui.qtablewidget->setFont(font); //設置字體
(18)獲取某一單元格的內容
1 QString strText = ui.qtablewidget->item(0, 0)->text();
Good Good Study, Day Day Up.
順序 選擇 循環 堅持