




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、N z在使用Qt不多的日子里,已經(jīng)兩次用到了QTableWidget這個(gè)控件,也慢慢的習(xí)慣和喜歡上了它。再使用QTableWidget的時(shí)候,已不像剛開(kāi)始使用時(shí)的迷茫。嗯嗯?,F(xiàn)在就來(lái)總結(jié)總結(jié)我與QTableWidget相識(shí)的歷程.(*_*) 嘻嘻使用時(shí)也查過(guò)不少資料,在此感謝前輩們的用心總結(jié)與分享! &
2、#160; . ./ 1.QTableWidget不能在mainwindow中隨主窗口的大小變化? 解決:在表格外部添加布局。 代碼:tableWidget = new QTableWidget; tableWidget ->setObjectName(QString:fromUtf8("tableWidget&q
3、uot;); QVBoxLayout *verticalLayout; verticalLayout->addWidget(tableWidget );2.將表格變?yōu)榻咕庉嫞?#160; tableWidget->setEditTriggers(QAbstractItemView:NoEditTriggers); (參數(shù)
4、含義:QAbstractItemView.NoEditTriggers-不能對(duì)表格內(nèi)容進(jìn)行修改 QAbstractItemView.CurrentChanged-任何時(shí)候都能對(duì)單元格修改 QAbstractItemView.DoubleClicked-雙擊單元格
5、60; QAbstractItemView.SelectedClicked-單擊已選中的內(nèi)容 QAbstractItemView.EditKeyPressed-
6、 QAbstractItemView.AnyKeyPressed-按下任意鍵就能修改 QAbstractItemView.AllEditTriggers-以上條件全包括)3.設(shè)置表格為整行選擇 tableWidget->setSelectionBehavior(QAbstractItemView:SelectRows); /
7、整行選中的方式 (參數(shù)含義:AbstractItemView.SelectItems-選中單個(gè)單元格 QAbstractItemView.SelectRows-選中一行 QAbstractItemView.SelectColumns-選中一列)4
8、.單個(gè)選中和多個(gè)選中的設(shè)置: tableWidget->setSelectionMode(QAbstractItemView:ExtendedSelection); /設(shè)置為可以選中多個(gè)目標(biāo) (參數(shù)含義:QAbstractItemView.NoSelection-不能選擇 QAbstractItemView.SingleSelection-選中單個(gè)目標(biāo)
9、0; QAbstractItemView.MultiSelection-選中多個(gè)目標(biāo) QAbstractItemView.ExtendedSelection/QAbstractItemView.ContiguousSelection 的區(qū)別不明顯,主要功能是正常情況下是單選,但按下Ctrl或Shift鍵后,可以多選)5.表格表頭的顯示與隱藏 對(duì)于水平或垂直方法的表頭,可以用以下方式進(jìn)行 隱藏/顯示 的設(shè)置
10、: tableWidget->verticalHeader()->setVisible(false); /隱藏列表頭 tableWidget->horizontalHeader()->setVisible(false); /隱藏行表頭 注意:需要 #include <QHeaderView>6.對(duì)表頭文字的字體、顏色進(jìn)行設(shè)置 QTableWidget
11、Item *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); /獲得水平方向表頭的Item對(duì)象 columnHeaderItem0->setFont(QFont("Helvetica"); /設(shè)置字體 columnHeaderItem0->setBackgroundColor(QColor(0,60,10); /設(shè)置單元格背景顏色
12、 columnHeaderItem0->setTextColor(QColor(200,111,30); /設(shè)置文字顏色 注意:需要 #include <QHeaderView>7.在單元格里加入控件: QComboBox *comBox = new QComboBox(); comBox->addItem("Y"); com
13、Box->addItem("N"); tableWidget->setCellWidget(0,2,comBox); 8.單元格中添加圖片: tableWidget->setItem(row, 0, new QTableWidgetItem(QIcon(":/new/images/kingdemo.ico"),tr("");9設(shè)置單元格字體顏色、背景顏色和字體字符: QTableWidgetItem&
14、#160;*item = new QTableWidgetItem("Apple"); item->setBackgroundColor(QColor(0,60,10); item->setTextColor(QColor(200,111,100); item->setFont(QFont("Helvetica"); tableWidget->setItem(0,3,item); 另:如果需要
15、對(duì)所有的單元格都使用這種字體,則可以使用 tableWidget->setFont(QFont("Helvetica");10.設(shè)置單元格內(nèi)文字的對(duì)齊方式 水平對(duì)齊方式有: Constant Value Description Qt.AlignLeft 0x0001 Aligns with the left edge. Qt.AlignRight 0x0002 Aligns with th
16、e right edge. Qt.AlignHCenter 0x0004 Centers horizontally in the available space. Qt.AlignJustify 0x0008 Justifies the text in the available space. 垂直對(duì)齊方式: Constant Value Description
17、60;Qt.AlignTop 0x0020 Aligns with the top. Qt.AlignBottom 0x0040 Aligns with the bottom. Qt.AlignVCenter 0x0080 Centers vertically in the available space. 如果兩種都要設(shè)置,只要用 Qt.AlignHCenter |
18、; Qt.AlignVCenter 的方式即可11.合并單元格: tableWidget->setSpan(0, 0, 3, 1) # 其參數(shù)為: 要改變單元格的1行數(shù)、2列數(shù),要合并的3行數(shù)、4列數(shù)12.設(shè)置單元格的大小 首先,可以指定某個(gè)行或者列的大小 tableWidget->setColumnWidth(3,200); tableWidget->setRowHeigh
19、t(3,60);還可以將行和列的大小設(shè)為與內(nèi)容相匹配 tableWidget->resizeColumnsToContents(); tableWidget->resizeRowsToContents();13.獲得單擊單元格的內(nèi)容 通過(guò)實(shí)現(xiàn) itemClicked (QTableWidgetItem *) 信號(hào)的槽函數(shù),就可以獲得鼠標(biāo)單擊到的單元格指針,進(jìn)而獲得其中的文字信息connect(tableWidget,SIGNAL(itemDoubleCl
20、icked(QTreeWidgetItem*,int),this,SLOT(getItem(QTreeWidgetItem*,int);/將itemClicked信號(hào)與函數(shù)getItem綁定14.QTableWidget要調(diào)整表格行寬主要涉及以下函數(shù) tableWidget->horizontalHeader()->setResizeMode(QHeaderView:Stretch);/使列完全填充并平分 tableWidget->verticalHeader()->setResizeMode(QHeaderView:Stre
21、tch);/行自適應(yīng)寬度
22、
23、 tableWidget->resizeColumnsToContents(); /根據(jù)內(nèi)容調(diào)整列寬 tableWidget->resizeColumnToContents(int col);/根據(jù)內(nèi)容自動(dòng)調(diào)整給定列寬 tableWidget->horizontalHeader()->setResizeMode/把給定列設(shè)置為給定模式 主要模式有Stretch和Fixed15.添加表頭內(nèi)容: 方
24、法一: QStringList header; header<<""<<tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5"); 方法二: tableWidget->setHorizontalHeaderLabels(QStringList() <<
25、tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5");16.清除: tableWidget->clear();/清除所有可見(jiàn)數(shù)據(jù)(包括表頭),行還在 tableWidget->clearContents();/只清除表中數(shù)據(jù),不清除表頭內(nèi)容 tableWidget->setRowCount(0);/連行也清除掉15.一些零碎的知識(shí)點(diǎn)代碼:
26、60; int row = tableWidget->rowCount();/獲取表格中當(dāng)前總行數(shù) tableWidget->setRowCount(row+1);/添加一行 tableWidget->removeRow(row);/清除已有的行列 Int row1 = tableWidget->currentItem()->row();/當(dāng)前選中行 bool focus = t
27、ableWidget->isItemSelected(tableWidget->currentItem();/判斷是否選中一行 QString proName = tableWidget->item(row, col)->text();/獲取某一格內(nèi)容 setShowGrid(true);/顯示表格線 verticalHeader()->setVisible(false);/隱藏左邊垂直 QHeaderView *headerV
28、iew = horizontalHeader(); headerView->setMovable(false);/去除表頭的移動(dòng) headerView->resizeSection(0,284);/設(shè)置第一列寬 headerView->resizeSection(1,127);/設(shè)置第二列寬 headerView->setResizeMode(QHeaderView:Fixed);/列表不能移動(dòng) headerView->setClick
29、able(false);/不響應(yīng)鼠標(biāo)單擊 setEditTriggers(QTableWidget:NoEditTriggers);/不能編輯 setSelectionBehavior(QTableWidget:SelectRows);/一次選中一行 setSelectionMode(QAbstractItemView:SingleSelection);/只能單選 /*QScrollBar *scrollBar = horizontalScrollBar();
30、60;scrollBar->hide();*/ setHorizontalScrollBarPolicy(Qt:ScrollBarAlwaysOff);/去掉水平滾動(dòng)條 setVerticalScrollMode(QAbstractItemView:ScrollPerItem);/垂直滾動(dòng)條按項(xiàng)移動(dòng) setAutoScroll(false);/去掉自動(dòng)滾動(dòng)使行間隔變顏色 QPalette pal; pal.setColor(QPalette:Base, QColor(255, 0, 0); pal.setColor(QPa
31、lette:AlternateBase, QColor(0, 255, 0); ui->tableWidget->setPalette(pal); ui->tableWidget->setAlternatingRowColors(true);參加OSC應(yīng)用開(kāi)發(fā)大賽,拿Nexus 4手機(jī) 活動(dòng)詳情基本外觀設(shè)置FriendTable->setFrameShape(QFrame:NoFrame); /設(shè)置邊框FriendTable->setHorizontalHeaderLabels(HeadList); 設(shè)置表頭FriendTable-&
32、gt;setSelectionMode(QAbstractItemView:SingleSelection); 設(shè)置選擇的模式為單選擇FriendTable->setSelectionBehavior(QAbstractItemView:SelectRows); 設(shè)置選擇行為時(shí)每次選擇一行FriendTable->setShowGrid(false); 設(shè)置不顯示格子線FriendTable->setFont(font); 設(shè)置字體 設(shè)置表單背景或透明QPal
33、ette pal = musicTable->palette(); pal.setBrush(this->backgroundRole(),QBrush(QPixmap("images/background.png") ); musicTable->setPalette( pal );設(shè)置它的背景圖片,也可以將QBrush初始化為QColor來(lái)設(shè)置背景顏色 QPalette pll = musicTable->palette();pll.setBrush(QPalett
34、e:Base,QBrush(QColor(255,255,255,0);musicTable->setPalette(pll); /和QTextEdit一樣,都可以使用樣式表QPalette來(lái)修改它的背景顏色和背景圖片,這里我們把刷子設(shè)置為全透明的,就可以是透明的在QTableWidget列表中添加圖片的方法 QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes");cubesHeaderItem->setIcon(QIcon(QPixm
35、ap("1.png");cubesHeaderItem->setTextAlignment(Qt:AlignVCenter); musicTable->setItem(1,1,cubesHeaderItem); /在第一行第一列中顯示圖片 *表頭的屬性修改*musicTable->horizontalHeader()->resizeSection(0,150); /修改表頭第一列的寬度為150 musicTable->horizontalHeader()->setFixed
36、Height(25); /修改表頭合適的高度musicTable->horizontalHeader()->setStyleSheet("QHeaderView:section background-color:lightblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c;"); /設(shè)置表頭字體,顏色,模式 FriendTable->verticalHeader()->setStyleSheet("Q
37、HeaderView:section background-color:skyblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c"); /設(shè)置縱列的邊框項(xiàng)的字體顏色模式等 本來(lái)想找找QT里有沒(méi)有現(xiàn)成的API的,結(jié)果沒(méi)有找到,只能自己寫(xiě)了。實(shí)現(xiàn)也好實(shí)現(xiàn),QTableWidgetItem里面有修改背景色的API,直接調(diào)用,然后用循環(huán)控制隔行換色即可。實(shí)現(xiàn)代碼:void testtt:changeColor(QTableWidget *tablew
38、idget)for (int i = 0;i < tablewidget->rowCount();i+) if (i % 2 = 0) for (int j = 0;j < tablewidget->columnCount();j+)
39、160; QTableWidgetItem *item = tablewidget->item(i,j); if (item)
40、; const QColor color = QColor(252,222,156);
41、0; item->setBackgroundColor(color); 使用向表中插入一項(xiàng) QTa
42、bleWidgetItem *num=new QTableWidgetItem(QTableWidgetItem:Type); num->setCheckState(Qt:Unchecked); /加入復(fù)選框 num->setIcon(QIcon("images/fetion.png&qu
43、ot;); /加入ICon num->setText(InfoList.at(i).name); num->setFont(font); num->setTextC
44、olor(color); num->setFlags(num->flags() Qt:ItemIsEditable); int currentRow=FriendTable->rowCount(); /插入到最后
45、; FriendTable->insertRow(currentRow); FriendTable->setItem(currentRow,0,num); /插入該Item FriendTable->selectRow(0); 選擇第一行刪除某一
46、行 列FriendTable->removeRow(row);FriendTable->removeColumn (column ); 信號(hào)void cellActivated ( int row, int column )void cellChanged ( int row, int column )void cellClicked ( int row, int column )void cellDoubleClicked ( int row, int column )void cellEntered ( int row
47、, int column )void cellPressed ( int row, int column )void currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn )void currentItemChanged ( QTableWidgetItem * current, QTableWidgetItem * previous ) 改變Item了void itemActivated ( QTableWidg
48、etItem * item )void itemChanged ( QTableWidgetItem * item )void itemClicked ( QTableWidgetItem * item )void itemDoubleClicked ( QTableWidgetItem * item )void itemEntered ( QTableWidgetItem * item )void itemPressed ( QTableWidgetItem * item )void itemSelectionChanged ()Q
49、T學(xué)習(xí)筆記-36.QTableWidget根據(jù)表格自動(dòng)調(diào)整列寬度 分類: 高品質(zhì)來(lái)自于對(duì)自己的無(wú)情挑剔 2012-07-30 14:15 756人閱讀 評(píng)論(0) 收藏 舉報(bào) QT學(xué)習(xí)筆記-36.QTableWidget根據(jù)表格自動(dòng)調(diào)整列寬度ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView:Stretch);/使列平均分配QTableWidget要調(diào)整表格行寬主要涉及以下一個(gè)函數(shù)1.resizeColumnsToContents(); 根據(jù)內(nèi)容調(diào)整列寬
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 星級(jí)酒店集團(tuán)管理辦法
- 血液中心全面質(zhì)量管理體系建設(shè)及程序文件解讀
- 華為后備梯隊(duì)管理辦法
- 公廁建設(shè)后續(xù)管理辦法
- 水輪機(jī)增效優(yōu)化技術(shù)-洞察及研究
- 傳播學(xué)領(lǐng)域的爭(zhēng)議、轉(zhuǎn)向及新聞傳播范疇探討
- 公益健康基金管理辦法
- 公文書(shū)寫(xiě)中的字體規(guī)范與設(shè)計(jì)原則
- 安全生產(chǎn)八不傷害心得體會(huì)
- 世界文化遺產(chǎn)申報(bào)
- GB/T 3672.2-2002橡膠制品的公差第2部分:幾何公差
- GB/T 18884.2-2015家用廚房設(shè)備第2部分:通用技術(shù)要求
- GB/T 12239-2008工業(yè)閥門(mén)金屬隔膜閥
- 軍標(biāo)類型整理文檔
- 山東中醫(yī)藥大學(xué)2020-2021學(xué)年內(nèi)科護(hù)理學(xué)試題及答案1
- DB32T 4174-2021 城市居住區(qū)和單位綠化標(biāo)準(zhǔn)
- 基本原理與性能特點(diǎn)多自由度電磁軸承課件
- Q∕SY 1836-2015 鍋爐 加熱爐燃油(氣)燃燒器及安全聯(lián)鎖保護(hù)裝置檢測(cè)規(guī)范
- 北京輸變電工程標(biāo)準(zhǔn)工藝應(yīng)用圖冊(cè)(圖文并茂)
- 儀器使用記錄表
- 《汽車(chē)電工電子技術(shù)》全套教案(完整版)
評(píng)論
0/150
提交評(píng)論