QTableWidget 常用接口封装一

本文介绍了Qt中QTableWidget的使用方法,包括如何获取、设置单元格内容及样式,更新表头信息,并提供了设置背景颜色和滚动条样式的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


//获取TableWidgetItem
QTableWidgetItem* getTableWidgetItem(QTableWidget*table,int row ,int column,int alignment=Qt::AlignCenter)
{
    QTableWidgetItem* pItem =  table->item(row,column); //找到单元格
    if(pItem == 0)
    {
        pItem = new QTableWidgetItem();
        pItem->setTextAlignment(alignment);
        pItem->setFont(table->font());
        table->setItem(row, column, pItem);
    }
    return  pItem;
}
//处理TableWidgetItem
QTableWidgetItem* setTableWidgetItem(QTableWidget*table,int row ,int column,QString text,int alignment=Qt::AlignCenter)
{
    QTableWidgetItem* pItem = getTableWidgetItem(table,row,column,alignment);
    if(pItem != 0)
    {
        pItem->setText(text);
        pItem->setTextAlignment(alignment);
    }
    return   pItem;
}
//获取TableWidgetItem
QString getTableWidgetItemStr(QTableWidget*table,int row ,int column)
{
    QTableWidgetItem* pItem = getTableWidgetItem(table,row,column);
    if(pItem != 0)
        return pItem->text();
    return  "";
}


//更新表头
void updateTableWidgetHead(QTableWidget *tablewidget, QStringList headlist, QStringList vheadlist,bool stretch,bool backColor)
{
    tablewidget->clear();
    tablewidget->setColumnCount(headlist.size());
    tablewidget->setHorizontalHeaderLabels(headlist);
    //tablewidget->horizontalHeader()->setFont(getFontAdptive());
    tablewidget->setHorizontalHeaderLabels(headlist);
    if(vheadlist.size()!=0)
    {
        tablewidget->verticalHeader()->setVisible(true);
    }else{
        tablewidget->verticalHeader()->setVisible(false);
    }
    tablewidget->horizontalHeader()->setVisible(true);
    tablewidget->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:rgb(220,221,221);"
                                                   "border-color:rgb(200,199,199);"
                                                   "border-style:solid;"
                                                   "border-width:1px;}");
    tablewidget->horizontalHeader()->setFixedHeight(40); //设置表头的高度
    tablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
    tablewidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    tablewidget->setSelectionMode(QAbstractItemView::SingleSelection);
    tablewidget->setFocusPolicy(Qt::NoFocus);
    tablewidget->horizontalHeader()->setHighlightSections(false);
    if(stretch)
    {
        tablewidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    }
    if(backColor)
    {
        tablewidget->setStyleSheet("QTableWidget::item:selected{\
                                   padding:-1px;background:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, \
                                                                           stop:0 rgba(255, 255, 255, 255), \
                                                                           stop:0.5 rgba(235, 247, 253, 255), \
                                                                           stop:1 rgba(213, 237, 250, 255));\
border: 1px solid rgb(65,173,255);\
    }QTableWidget::item:disabled {background: rgba(240, 240, 240, 255);color:rgb(160,160,160);border: 0px solid rgb(65,173,255);}");
}
QScrollBar * bar = tablewidget->verticalScrollBar();
QString sheet;
sheet = QString ("QScrollBar:vertical{min-width:%1px;min-height:%2px;background-color:rgba(239, 239, 239, 255); margin:0px,0px,0px,0px;border: 1px solid rgb(185, 185, 185);}\
                 QScrollBar::handle:vertical{min-height:%2px;background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(250, 250, 250, 255), stop:0.5 rgba(210, 210, 210, 255), stop:1 rgba(208, 208, 208, 255));\
                                             border: 1px solid rgb(185, 185, 185); border-left: rgba(0, 0, 0, 0);}\
                 QScrollBar::add-line:vertical { height:0px; subcontrol-position:bottom;}\
                 QScrollBar::sub-line:vertical  { height:0px; subcontrol-position:top;}")
                 .arg(16).arg(50);
        bar->setStyleSheet(sheet);
}

//更新表头
void updateTableWidgetHead(QTableWidget *tablewidget, QStringList headlist,bool stretch,bool backColor)
{
    updateTableWidgetHead(tablewidget,headlist,QStringList(),stretch,backColor);
}

//增加表格项
void addTableWidgetItem(QTableWidget*table,int row,int column,QString text,int height=40,QColor color=Qt::white,bool bcolor = false,int alignment=Qt::AlignCenter)
{
    if(row <0 || column <0)
        return;
    if(row >= table->rowCount())
        table->setRowCount(row+1);
    if(column >= table->columnCount())
        table->setColumnCount(column+1);
    QTableWidgetItem *item = setTableWidgetItem(table,row,column,text,alignment);
    if(item != 0)
    {
        if(bcolor)
            item->setBackground(color);
        table->setRowHeight(row,height);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值