QTableWidget的使用詳細介紹和美工總結(轉)

基本外觀設置

FriendTable->setFrameShape(QFrame::NoFrame);? //設置邊框

FriendTable->setHorizontalHeaderLabels(HeadList);? 設置表頭

FriendTable->setSelectionMode(QAbstractItemView::SingleSelection);?? 設置選擇的模式為單選擇

FriendTable->setSelectionBehavior(QAbstractItemView::SelectRows);??? 設置選擇行為時每次選擇一行

FriendTable->setShowGrid(false);?? 設置不顯示格子線

FriendTable->setFont(font);?? 設置字體

FriendTable->hideColumn(0);??? //隱藏用戶指定的某一列

?

設置表單背景或透明

QPalette pal = musicTable->palette();
pal.setBrush(this->backgroundRole(),QBrush(QPixmap("images/background.png")) );
??? musicTable->setPalette( pal );

?

設置它的背景圖片,也可以將QBrush初始化為QColor來設置背景顏色

QPalette pll = musicTable->palette();

pll.setBrush(QPalette::Base,QBrush(QColor(255,255,255,0)));

musicTable->setPalette(pll);? //和QTextEdit一樣,都可以使用樣式表QPalette來修改它的背景顏色和背景圖片,這里我們把刷子設置為全透明的,就可以是透明的


在QTableWidget列表中添加圖片的方法???
QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
cubesHeaderItem->setIcon(QIcon(QPixmap("1.png")));
cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
musicTable->setItem(1,1,cubesHeaderItem);?? //在第一行第一列中顯示圖片

?

*******************表頭的屬性修改****************

musicTable->horizontalHeader()->resizeSection(0,150);? //修改表頭第一列的寬度為150

musicTable->horizontalHeader()->setFixedHeight(25);? //修改表頭合適的高度

musicTable->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:lightblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c;}");??? //設置表頭字體,顏色,模式

FriendTable->verticalHeader()->setStyleSheet("QHeaderView::section {? background-color:skyblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c}");?? //設置縱列的邊框項的字體顏色模式等

注:QTableView的列頭和行頭使用其內含子控件QHeaderView體現的,故我們可以在 .qss 美工文件中如下寫到:

[css]?view plaincopy
  1. QTableWidget?QHeaderView::section???
  2. {??
  3. ????background-color:lightblue;??
  4. ????color:?black;??
  5. ????padding-left:?4px;??
  6. ????border:?1px?solid?#6c6c6c??
  7. }??

上述用到CSS和QSS的語法 ,指定作用的對象為QTableWidget 的 QHeaderView子控件;

定義一個后綴名為.qss的文件,添加到資源文件中,然后通過如下代碼使其生效:

[cpp]?view plaincopy
  1. QFile?beauty("beauty.qss");??
  2. ???beauty.open(QFile::ReadOnly);??
  3. ???qApp->setStyleSheet(beauty.readAll());??
  4. ???beauty.close();??

?

[cpp]?view plaincopy
  1. QFile?beauty("beauty.qss");??
  2. ???beauty.open(QFile::ReadOnly);??
  3. ???qApp->setStyleSheet(beauty.readAll());??
  4. ???beauty.close();??


本來想找找QT里有沒有現成的API的,結果沒有找到,只能自己寫了。
實現也好實現,QTableWidgetItem里面有修改背景色的API,直接調用,然后用循環控制隔行換色即可。
實現代碼:
void testtt::changeColor(QTableWidget *tablewidget){
for (int i = 0;i < tablewidget->rowCount();i++)
{
????? if (i % 2 == 0)
????? {
??????????? for (int j = 0;j < tablewidget->columnCount();j++)
?????????? {
???????????????? QTableWidgetItem *item = tablewidget->item(i,j);
???????????????? if (item)
??????????????? {
???????????????????? const QColor color = QColor(252,222,156);
????????????????????? item->setBackgroundColor(color);
???????????????? }
?????????? }
???? }
}

?

?

?

?

使用

向表中插入一項

? QTableWidgetItem *num=new QTableWidgetItem(QTableWidgetItem::Type);
??????????? num->setCheckState(Qt::Unchecked);?? //加入復選框
??????????? num->setIcon(QIcon("images/fetion.png"));? //加入ICon
??????????? num->setText(InfoList.at(i).name);
??????????? num->setFont(font);
??????????? num->setTextColor(color);
??????????? num->setFlags(num->flags() ^ Qt::ItemIsEditable);

??????????? int currentRow=FriendTable->rowCount();? //插入到最后
??????????? FriendTable->insertRow(currentRow);
??????????? FriendTable->setItem(currentRow,0,num);? //插入該Item
??????????? FriendTable->selectRow(0);?? 選擇第一行

刪除某一行 列

FriendTable->removeRow(row);

FriendTable->removeColumn (column );

?

信號

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, 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 ( QTableWidgetItem * item )
void itemChanged ( QTableWidgetItem * item )
void itemClicked ( QTableWidgetItem * item )
void itemDoubleClicked ( QTableWidgetItem * item )
void itemEntered ( QTableWidgetItem * item )
void itemPressed ( QTableWidgetItem * item )
void itemSelectionChanged ()

上述大部分代碼轉自:http://blog.csdn.net/xie376450483/article/details/5816950# 感謝~~~

自己使用QTableWidget時的一些用法的總結:

1、關于QTableWidget的頭單元的寬度,將第一列設置為hint默認寬度

[cpp]?view plaincopy
  1. ui->twOrderDish->resizeColumnToContents(0);??

2、將QTableWidget的頭單元最后補全:

[cpp]?view plaincopy
  1. ui->twOrderDish->horizontalHeader()->setStretchLastSection(true);??

說明:該代碼是實現將header最后的空間補全,僅僅是通過延伸最后一個單元實現的,而沒有單元格平分;幸好有如下代碼。

3、將QTableWidget單元格平分:

[cpp]?view plaincopy
  1. ui->twOrderDish->horizontalHeader()->setResizeMode(QHeaderView::Stretch);??

使用這段代碼即可實現將單元格平分了,對于行高的設置和這個設置類似,看如下代碼:

[cpp]?view plaincopy
  1. ui->twOrderDish->verticalHeader()->setResizeMode(QHeaderView::Stretch);??

?

[cpp]?view plaincopy
    1. ui->twOrderDish->horizontalHeader()->setStretchLastSection(true);

?

轉自:http://blog.csdn.net/leo115/article/details/7665090

轉載于:https://www.cnblogs.com/veins/p/3148491.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376600.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android programming on Mac 之安裝Eclipse

1.安裝包在此鏈接下載&#xff1a; http://developer.android.com/sdk/index.html google GoAgent翻墻不好用&#xff0c;更新了host文件也不行&#xff0c;整了半天&#xff0c;還是一怒之下續簽了vpn賬號。早知如此&#xff0c;何必折騰。~~~~(>_<)~~~~ 更新文件時…

c++關于虛表的一些筆記

文章目錄1、虛函數表指針2、多態構成的條件3、重載、重寫、重定義 三者區別4、繼承與虛函數5、單繼承中的虛函數表無虛函數覆蓋有虛函數覆蓋6、單繼承中的虛函數表無虛函數覆蓋有虛函數覆蓋參考看《深度探索c對象模型》的時候對虛表有了點疑惑&#xff0c;正好網上有些文章解除…

4、在Shell程序中的使用變量

學習目標變量的賦值變量的訪問變量的輸入 12-4-1 變量的賦值在Shell編程中&#xff0c;所有的變量名都由字符串組成&#xff0c;并且不需要對變量進行聲明。要賦值給一個變量&#xff0c;其格式如下&#xff1a;變量名值。注意&#xff1a;等號()前后沒有空格例如&#xff1a; …

C語言技巧:把單一元素的數組放在末尾,struct可以擁有可變大小的數組

《C 對象模型》第19頁有這樣一句話 C程序員的巧計有時候卻成為c程序員的陷阱。例如把單一元素的數組放在一個struct的末尾&#xff0c;于是每個struct objects可以擁有可變數組的數組&#xff1a; struct mumble {/* stuff */char pc[1]; };//從文件或標準輸入裝置中取得一個…

探討C++ 變量生命周期、棧分配方式、類內存布局、Debug和Release程序的區別(二)...

看此文&#xff0c;務必需要先了解本文討論的背景&#xff0c;不多說&#xff0c;給出鏈接&#xff1a; 探討C 變量生命周期、棧分配方式、類內存布局、Debug和Release程序的區別&#xff08;一&#xff09; 本文會以此問題作為討論的實例&#xff0c;來具體討論以下四個問題&a…

后臺系統可擴展性學習筆記(一)概要

文章目錄系統大致架構可擴展性負載均衡器與會話保持引入冗余增強系統可用性緩存減輕數據庫壓力異步處理參考系統大致架構 當一個用戶請求從客戶端出發&#xff0c;經過網絡傳輸&#xff0c;達到 Web 服務層&#xff0c;接著進入應用層&#xff0c;最后抵達數據層&#xff0c;它…

poj 3728(LCA + dp)

題目鏈接&#xff1a;http://poj.org/problem?id3728 思路&#xff1a;題目的意思是求樹上a -> b的路徑上的最大收益&#xff08;在最小值買入&#xff0c;在最大值賣出&#xff09;。 我們假設路徑a - > b 之間的LCA(a, b) f, 并且另up[a]表示a - > f之間的最大收益…

成功之路

1、每天都要有進步&#xff0c;都要有新知識的收獲。 2、工作認真負責&#xff0c;高效的完成&#xff0c;多總結。 3、自己多練習一些感興趣的東西&#xff0c;實踐&#xff01;&#xff01;&#xff01; 4、寫博客。 5、百度、騰訊、阿里是目標&#xff0c;差距還很大&#x…

后臺系統可擴展性學習筆記(二)權衡取舍

文章目錄性能與可擴展性延遲與吞吐量可用性與一致性一致性模式可用性模式可用性衡量參考系統設計中也面臨許多權衡取舍&#xff1a;性能與可擴展性延遲與吞吐量可用性與一致性 性能與可擴展性 可擴展&#xff0c;意味著服務能以加資源的方式成比例地提升性能&#xff0c;性能…

iOS中使用子線程的完整方法

第一步&#xff1a;開啟子線程 //開啟子線程到網絡上獲取數據myFirstThread [[NSThread alloc]initWithTarget:self selector:selector(thread1GetData) object:nil];[myFirstThread setName:"第一個子線程,用于獲取網絡數據"];[myFirstThread start]; 第二步&…

DIV的表單布局

表單布局其實用表格最好了&#xff0c;可是表格的話&#xff0c;無法定位&#xff0c;這個是一個硬傷。 <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <title>表單布局</title> <link rel"stylesheet" …

后臺系統可擴展性學習筆記(三)DNS機制原理

文章目錄DNS概念梳理域名基本概念資源記錄基本概念路由策略DNS 域空間結構實現原理復制機制查詢機制緩存機制參考DNS概念梳理 DNS&#xff08;Domain Name System&#xff09;相當于互聯網的通訊錄&#xff0c;能夠把域名翻譯成 IP 地址。 從技術角度來講&#xff0c;DNS 是個…

后臺系統可擴展性學習筆記(四)CDN機制原理

文章目錄概念梳理CDN拓撲結構CDN內容分發方式架構原理工作原理實現原理概念梳理 CDN&#xff08;Content Delivery Network&#xff0c;內容分發網絡&#xff09;是由分布在不同地理位置的代理服務器及其數據中心組成的網絡&#xff0c;希望在空間距離上為用戶就近提供服務&am…

Javascript 基礎—變量 運算符

經過找工作筆試的洗禮&#xff0c;感覺自己js語法方面掌握的不是很系統&#xff0c;今天來梳理下——變量以及運算符。 基礎篇 和C語言的不同點&#xff1a;是一種弱類型語言&#xff0c;申明變量時不需要指定類型&#xff1b;變量名的命名方法也有不同&#xff1b;簡單類型種類…

后臺系統可擴展性學習筆記(五)負載均衡

文章目錄Load balancer(負載均衡器)請求傳輸拆解DNS 負載均衡客戶端負載均衡OSI 七層模型回顧2 層、3 層負載均衡3/4 層負載均衡7 層負載均衡在 第一節談到了系統的橫向擴展在于從單機擴展到多機&#xff0c;那么面臨的第一個問題就是這些機器如何協同工作&#xff0c;即如何調…

Struts2第一個工程helloStruts極其基本配置

前面已經準備好了Struts-2.3.15&#xff0c;現在就可以直接搭建Struts2的工程了。前面http://blog.csdn.net/huangchnegdada/article/details/9179041有對Struts-2.3.15的準備工作的詳述。 首先打開MyEclispe新建一個Web Project&#xff0c;名字就叫Struts2_0100_Introduction…

[LeetCode]Find Minimum in Rotated Sorted Array

題目描述&#xff1a; Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum element. You may assume no duplicate exists in the array. 解題方案&#xff1a; 直接貼代碼&…

后臺系統可擴展性學習筆記(六)反向代理

文章目錄Web代理服務反向代理反向代理作用Web代理服務 Web 代理服務指的是在客戶端資源請求和提供這些資源的 Web 服務之間充當中介的角色&#xff0c;代理服務可以實現在客戶端&#xff0c;或者從客戶端到目標服務器中間的任意環節。 例如&#xff0c;客戶端不直接向提供目標…

(C)單鏈表

老師版 1 #include <stdio.h>2 #include <stdlib.h>3 4 // 定于Node數據類型5 struct Node6 {7 int data; // 數據域8 struct Node *next; // 指針域9 };10 11 // 創建一個單鏈表&#xff0c;并把head節點返回&#xff1b;…