QTableWidget 常用方法大赏

QTableWidget常用方法的收集

1.设置列表头

tableWidget->setColumnCount(3);
tableWidget->setHorizontalHeaderLabels(QStringList() << "第一列" << "第二列" << "第三列");

2.设置列宽

tableWidget->setColumnWidth(0, 100);
tableWidget->setColumnWidth(1, 100);
tableWidget->setColumnWidth(2, 100);

3.插入行

ui->tableWidget->insertRow(line);
ui->tableWidget->setItem( line, 0, new QTableWidgetItem("1"));
ui->tableWidget->setItem( line, 1, new QTableWidgetItem("2"));
ui->tableWidget->setItem( line, 2, new QTableWidgetItem("3"));

4.滚动条保持最下方

tableWidget->scrollToBottom();

5.自适应行、列

//自适应行
tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//自适应列
tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//自适应列头内容填充
tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
//最后一列填充剩余宽度
tableWidget->horizontalHeader()->setStretchLastSection(true);

6.禁用水平滚动条

tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
//隐藏
tableWidget->horizontalScrollBar()->hide();

7.插入控件和获取

// row行column列插入widget控件
tableWidget->setCellWidget(row, column, widget);
//获取控件, 获取后再根据类型强转为自己插入的控件
QWidget *w = tableWidget->cellWidget(row, column);

8.设置无焦点

tableWidget->setFocusPolicy(Qt::NoFocus);

9.某项不能点击

tableWidget->item(row, column)->setFlags(Qt::ItemIsSelectable);

10.添加复选框

tableWidget->item(row, column)->setCheckState(Qt::Unchecked);

11.鼠标拖动效果

QScroller *sc = QScroller::scroller(tableWidget);
QScroller::ScrollerGestureType gesture = QScroller::LeftMouseButtonGesture;
sc->grabGesture(tableWidget, gesture);

12.设置选中策略

//选中行的模式
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
//单选
tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);

13.样式表示例

QTableWidget
{
gridline-color: black;
selection-color: #D4237A;
color:#D4237A;
selection-background-color: #595a5c;
font: 12pt "黑体";
}

14.复制行

void copyRow(QTableWidget *table, int from, int to)
{
    int colCount = table->columnCount();
    for(int col=0; col<colCount; col++)
    {
        QString text = table->item(from, col)->text();
        QTableWidgetItem *item = new QTableWidgetItem;
        item->setText(text);
        table->setItem(to, col, item);
    }
}

15.QTableWidget移动行

void moveRow(QTableWidget *table, int from, int to)
{
    if( table == nullptr )
    {
        return;
    }
    if( from == to )
    {
        return;
    }
    if( from < 0 || to < 0 )
    {
        return;
    }
    int rowCount = table->rowCount();
    if( from >= rowCount  || to >= rowCount )
    {
        return;
    }

    int curCol = 0;
    curCol = table->currentColumn();
    QTableWidgetItem *curItem = table->currentItem();
    if( nullptr != curItem )
    {
        curCol = curItem->column();
    }
    int fromRow = from;
    int insertRow = to;
    if( to < from )
    {
        fromRow = from + 1;
        table->insertRow(to);
    }
    else
    {
        insertRow = to + 1;
        table->insertRow(insertRow);
    }
    this->copyRow( table, fromRow, insertRow );
    table->removeRow(fromRow);

    table->selectRow( insertRow );
    table->setCurrentCell(to, curCol);
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为啥不吃肉捏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值