日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Qt修炼手册10_QTableWidget控件使用说明及实践

發(fā)布時(shí)間:2025/3/15 c/c++ 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt修炼手册10_QTableWidget控件使用说明及实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.QTableWidget類簡介

QTableWidget是QT對話框設(shè)計(jì)中常用的顯示數(shù)據(jù)表格的控件
QTableWidget繼承于類QTableView,所以在學(xué)習(xí)QTableWidget之前可以先看一下QTableView,他們兩者的區(qū)別是:
  • QTableView可以使用自定義的數(shù)據(jù)模型來顯示內(nèi)容(意味著使用時(shí)先要通過setModel來綁定數(shù)據(jù)源)
  • QTableWidget則只能使用標(biāo)準(zhǔn)的數(shù)據(jù)模型。
QTableWidget單元格數(shù)據(jù)是QTableWidgetItem對象來實(shí)現(xiàn)的(不需要數(shù)據(jù)源,單元格內(nèi)的信息逐個(gè)填充即可)。 這主要由于QTableView類中有setModel成員函數(shù),而到了QTableWidget類中,該成員函數(shù)變成了私有。
使用QTableWidget就離不開QTableWidgetItem。QTableWidgetItem用來表示表格中的其中一個(gè)單元格,整個(gè)表格都需要用逐個(gè)單元格對象QTableWidgetItem構(gòu)建起來。

2.QTableWidget的控件屬性

2.1 禁止編輯表格

在默認(rèn)情況下,表格里的字符是可以更改的。
比如雙擊一個(gè)單元格,就可以修改原來的內(nèi)容,如果想禁止用戶的這種操作,讓這個(gè)表格對用戶只讀,這樣做:
ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

2.2設(shè)置表格為選中整行

/*設(shè)置表格為整行選中*/ ?
ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows); ??

2.3 設(shè)置單個(gè)選中還是多個(gè)選中

/*設(shè)置允許多個(gè)選中*/ ??
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); ? ?//在某個(gè)單元格內(nèi)(0.3)添加下拉框控件

2.10 合并單元格

ui.qtablewidget->setSpan(2, 2, 3, 2); ?//第一個(gè)參數(shù):要改變的單元格行數(shù) ?//第二個(gè)參數(shù):要改變的單元格列數(shù) ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//第三個(gè)參數(shù):需要合并的行數(shù) ?//第四個(gè)參數(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è)置滾動(dòng)條

ui.qtablewidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滾動(dòng)條

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.實(shí)例展示

#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; } 實(shí)驗(yàn)效果:

總結(jié)

以上是生活随笔為你收集整理的Qt修炼手册10_QTableWidget控件使用说明及实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。