Qt修炼手册10_QTableWidget控件使用说明及实践
生活随笔
收集整理的這篇文章主要介紹了
Qt修炼手册10_QTableWidget控件使用说明及实践
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.QTableWidget類簡介
QTableWidget是QT對話框設(shè)計中常用的顯示數(shù)據(jù)表格的控件。QTableWidget繼承于類QTableView,所以在學(xué)習(xí)QTableWidget之前可以先看一下QTableView,他們兩者的區(qū)別是:
- QTableView可以使用自定義的數(shù)據(jù)模型來顯示內(nèi)容(意味著使用時先要通過setModel來綁定數(shù)據(jù)源)
- QTableWidget則只能使用標(biāo)準(zhǔn)的數(shù)據(jù)模型。
使用QTableWidget就離不開QTableWidgetItem。QTableWidgetItem用來表示表格中的其中一個單元格,整個表格都需要用逐個單元格對象QTableWidgetItem構(gòu)建起來。
2.QTableWidget的控件屬性
2.1 禁止編輯表格
在默認情況下,表格里的字符是可以更改的。比如雙擊一個單元格,就可以修改原來的內(nèi)容,如果想禁止用戶的這種操作,讓這個表格對用戶只讀,這樣做:
ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
2.2設(shè)置表格為選中整行
/*設(shè)置表格為整行選中*/ ?ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows); ??
2.3 設(shè)置單個選中還是多個選中
/*設(shè)置允許多個選中*/ ??ui.qtablewidget->setSelectionMode(QAbstractItemView::ExtendedSelection); ?
2.4 表格表頭的顯示與隱藏
ui.qtablewidget->verticalHeader()->setVisible(true); ??ui.qtablewidget->horizontalHeader()->setVisible(false); ?
2.5 設(shè)置具體單元格中字體的顏色
ui.qtablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter); ?2.6 設(shè)置具體單元格中字體格式
ui.qtablewidget->item(1, 0)->setBackgroundColor(QColor(0,60,10)); ? //背景顏色ui.qtablewidget->item(1, 0)->setTextColor(QColor(200,111,100)); ? ? ? //字體顏色
ui.qtablewidget->item(1, 0)->setFont(QFont("Helvetica")); ? ? ? ? ? ? ? ? ?//字體風(fēng)格
2.7 設(shè)置具體單元格的值
ui.qtablewidget->setItem(1, 0, new QTableWidgetItem(str)); ?2.8 把QTableWidgetItem對象內(nèi)容裝換為QString
QString str =ui.qtablewidget->item(0, 0)->data(Qt::DisplayRole).toString();?2.9 具體單元格中添加控件
QComboBox *comBox = new QComboBox(); ??comBox->addItem("F"); ??
comBox->addItem("M"); ?
ui.qtablewidget->setCellWidget(0,3,comBox); ? ?//在某個單元格內(nèi)(0.3)添加下拉框控件
2.10 合并單元格
ui.qtablewidget->setSpan(2, 2, 3, 2); ?//第一個參數(shù):要改變的單元格行數(shù) ?//第二個參數(shù):要改變的單元格列數(shù) ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//第三個參數(shù):需要合并的行數(shù) ?//第四個參數(shù):需要合并的列數(shù) ?
2.11 具體單元格中插入圖片
ui.qtablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music")); ?2.12 設(shè)置顯示網(wǎng)格
ui.qtablewidget->setShowGrid(true);//顯示表格線 ?2.13 設(shè)置滾動條
ui.qtablewidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滾動條2.14 設(shè)置列標(biāo)簽
QStringList HStrList; HStrList.push_back(QString("name")); HStrList.push_back(QString("id")); HStrList.push_back(QString("age")); HStrList.push_back(QString("sex")); HStrList.push_back(QString("department")); //設(shè)置行列數(shù)(只有列存在的前提下,才可以設(shè)置列標(biāo)簽) int HlableCnt = HStrList.count(); ui.qtablewidget->setRowCount(10); ui.qtablewidget->setColumnCount(HlableCnt); //設(shè)置列標(biāo)簽 ui.qtablewidget->setHorizontalHeaderLabels(HStrList);2.15 將行和列的大小設(shè)為與內(nèi)容相匹配
ui.qtablewidget->resizeColumnsToContents(); ??ui.qtablewidget->resizeRowsToContents(); ?
2.16 設(shè)置字體
ui.qtablewidget->setFont(font); //設(shè)置字體2.17?獲取某一單元格的內(nèi)容
QString strText = ui.qtablewidget->item(0, 0)->text();2.18?清空表格的內(nèi)容
void QTableWidget::clear () [slot] ? ? ? ? ? ? //清空所有內(nèi)容,包括標(biāo)題頭 ?void QTableWidget::clearContents () [slot]//清空所有內(nèi)容,不包括標(biāo)題頭 ?
void QTableWidget::removeColumn ( int column ) [slot]//刪除一列,而不是清空表格 ?
void QTableWidget::removeRow ( int row ) [slot] ? ? ? ? //刪除一行,不是清空一行?
3.實例展示
#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent),ui(new Ui::WidgetClass) {ui->setupUi(this);ui->myTableWidget->setRowCount(7);ui->myTableWidget->setColumnCount(2);ui->myTableWidget->setWindowTitle("Chinese Well-Known Universities");//ui->myTableWidget->resize(300,400);QStringList Header;Header<<"University"<<"Location"; //表頭ui->myTableWidget->setHorizontalHeaderLabels(Header);ui->myTableWidget->setItem(0,0,new QTableWidgetItem("Tsinghua Univ"));ui->myTableWidget->setItem(1,0,new QTableWidgetItem("Peking Univ"));ui->myTableWidget->setItem(2,0,new QTableWidgetItem("FuDan Univ"));ui->myTableWidget->setItem(0,1,new QTableWidgetItem("BeiJing"));ui->myTableWidget->setItem(1,1,new QTableWidgetItem("BeiJing"));ui->myTableWidget->setItem(2,1,new QTableWidgetItem("ShangHai"));ui->myTableWidget->show();}Widget::~Widget() {delete ui; } 實驗效果:總結(jié)
以上是生活随笔為你收集整理的Qt修炼手册10_QTableWidget控件使用说明及实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用于二次开发企业即时通讯源码(C++/M
- 下一篇: 如何隐藏win32 console ap