Qt QTableWidget简单使用

1.运行效果如下,有同感的可以继续往下看看

2.设置列数和列宽度

    ui->tableWidget->setColumnCount(4);

    ui->tableWidget->setColumnWidth(0, 100);
    ui->tableWidget->setColumnWidth(1, 100);
    ui->tableWidget->setColumnWidth(2, 50);
    ui->tableWidget->setColumnWidth(3, 30);

3.设置表头

    QStringList headerTextList;
    headerTextList << QStringLiteral("类型") << QStringLiteral("名称") << QStringLiteral("值") << QStringLiteral("操作");
    ui->tableWidget->setHorizontalHeaderLabels(headerTextList);
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
    ui->tableWidget->horizontalHeader()->setSectionsClickable(false);
    ui->tableWidget->horizontalHeader()->setSectionsMovable(false);
    ui->tableWidget->horizontalHeader()->setFixedHeight(30);

4.设置其他

    ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
    ui->tableWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);//需要设置这个属性,否则滚动条有bug

5.连接信号

    connect(ui->add_button, &QPushButton::clicked, this, &TableDemo::SlotAdd);

    void TableDemo::SlotAdd()
    {
        int rows = ui->tableWidget->rowCount();
        ui->tableWidget->insertRow(rows);
        CreateRow(rows);
    }

6.其他函数   

//点击表格中删除按钮

    void TableDemo::SlotDelete()
    {
        QPushButton* cellWidget = qobject_cast<QPushButton*>(sender());
        int index = GetRowIndex(3, cellWidget);
        if (index < 0)
            return;

        ui->tableWidget->removeRow(index);
    }

    //新建一行

    void TableDemo::CreateRow(int row)
    {
        ui->tableWidget->setRowHeight(row, 30);
        ui->tableWidget->setCellWidget(row, 0, CreateTypeComboBox());
        ui->tableWidget->setCellWidget(row, 1, CreateNameLineEdit());
        ui->tableWidget->setCellWidget(row, 2, CreateValueButton());
        ui->tableWidget->setCellWidget(row, 3, CreateDeleteButton());
    }

    //获取操作的是哪一行

    int TableDemo::GetRowIndex(int column, QWidget* widget)
    {
        int rowCount = ui->tableWidget->rowCount();
        for (int i = 0; i < rowCount; ++i)
        {
            QWidget* pCell = ui->tableWidget->cellWidget(i, column);
            if (pCell == widget)
                return i;
        }

        return -1;
    }

    //创建表格中的下拉框

    QWidget* TableDemo::CreateTypeComboBox()
    {
        QComboBox* comboBox = new QComboBox(ui->tableWidget);
        comboBox->addItem(QStringLiteral("请选择"));
        return comboBox;
    }

    //创建表格中的输入框

    QWidget* TableDemo::CreateNameLineEdit()
    {
        QLineEdit* lineEdit = new QLineEdit(ui->tableWidget);
        lineEdit->setText(QString("%1").arg(++m_iIndex));//m_iIndex成员变量,初始值0
        return lineEdit;
    }

    //创建表格中的值输入按钮

    QWidget* TableDemo::CreateValueButton()
    {
        QPushButton* pButton = new QPushButton(ui->tableWidget);
        pButton->setCursor(Qt::PointingHandCursor);
        pButton->setText(QStringLiteral("设置"));
        return pButton;
    }

    //创建表格中的删除按钮

    QWidget* TableDemo::CreateDeleteButton()
    {
        QPushButton* pButton = new QPushButton(ui->tableWidget);
        pButton->setCursor(Qt::PointingHandCursor);
        pButton->setText(QStringLiteral("删"));

        connect(pButton, &QPushButton::clicked, this, &TableDemo::SlotDelete);

        return pButton;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值