基本外觀設置
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 美工文件中如下寫到:
- QTableWidget?QHeaderView::section???
- {??
- ????background-color:lightblue;??
- ????color:?black;??
- ????padding-left:?4px;??
- ????border:?1px?solid?#6c6c6c??
- }??
上述用到CSS和QSS的語法 ,指定作用的對象為QTableWidget 的 QHeaderView子控件;
定義一個后綴名為.qss的文件,添加到資源文件中,然后通過如下代碼使其生效:
- QFile?beauty("beauty.qss");??
- ???beauty.open(QFile::ReadOnly);??
- ???qApp->setStyleSheet(beauty.readAll());??
- ???beauty.close();??
?
- QFile?beauty("beauty.qss");??
- ???beauty.open(QFile::ReadOnly);??
- ???qApp->setStyleSheet(beauty.readAll());??
- ???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默認寬度
- ui->twOrderDish->resizeColumnToContents(0);??
2、將QTableWidget的頭單元最后補全:
- ui->twOrderDish->horizontalHeader()->setStretchLastSection(true);??
說明:該代碼是實現將header最后的空間補全,僅僅是通過延伸最后一個單元實現的,而沒有單元格平分;幸好有如下代碼。
3、將QTableWidget單元格平分:
- ui->twOrderDish->horizontalHeader()->setResizeMode(QHeaderView::Stretch);??
使用這段代碼即可實現將單元格平分了,對于行高的設置和這個設置類似,看如下代碼:
- ui->twOrderDish->verticalHeader()->setResizeMode(QHeaderView::Stretch);??
?
- ui->twOrderDish->horizontalHeader()->setStretchLastSection(true);
?
轉自:http://blog.csdn.net/leo115/article/details/7665090