QTableWidget的使用和美工總結
基本外觀設置
FriendTable->setFrameShape(QFrame::NoFrame); //設置邊框
FriendTable->setHorizontalHeaderLabels(HeadList); 設置表頭
FriendTable->setSelectionMode(QAbstractItemView::SingleSelection); 設置選擇的模式爲單選擇
FriendTable->setSelectionBehavior(QAbstractItemView::SelectRows); 設置選擇行爲時每次選擇一行
FriendTable->setShowGrid(false); 設置不顯示格子線
FriendTable->setFont(font); 設置字體
設置表單背景或透明
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}"); //設置縱列的邊框項的字體顏色模式等
本來想找找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 ()