QT的tableWidget使用

TableWidget对应关键的槽函数值

voidclear():清空表格中的所有内容,包括对应表头
voidclearContents():清空表中的内容信息
voidinsertColumn(int column):将空列插入到表中的
voidinsertRow(int row):在表中的行处插入一个空
voidremoveColumn(int column):删除表中的一列数据
voidremoveRow(int row):删除表中的一行数据
void

scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

滚动视图以确保项目可见

TableWidget对应关键的信号函数

voidcellActivated(int row, int column):单元格被激活
voidcellChanged(int row, int column):单元格改变
voidcellClicked(int row, int column):单元格被点击
voidcellDoubleClicked(int row, int column):双击单元格
voidcellEntered(int row, int column):entry键入
voidcellPressed(int row, int column):点击之后
void

currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)

当前的cell改变之后

void

currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)

当前的item改变

void

itemActivated(QTableWidgetItem *item)

当item激活

void

itemChanged(QTableWidgetItem *item)

当item改变

void

itemClicked(QTableWidgetItem *item)

当item点击

voiditemDoubleClicked(QTableWidgetItem *item)
voiditemEntered(QTableWidgetItem *item)
voiditemPressed(QTableWidgetItem *item)
voiditemSelectionChanged()

1,本人在Qt中设置了如下的UI界面,进行QT TableWidget的学习

 2,TableWidget进行初始化

        tableWidget = new QTableWidget(this);
        // 设置对应的行数
        tableWidget->setRowCount(10);
        // 设置对应的列数
        ui->tableWidget->setColumnCount(4);
        // 设置对应的标有的内容
        QStringList horizonHeadList;
        horizonHeadList<<"姓名";
        horizonHeadList<<"性别";
        horizonHeadList<<"年龄";
        horizonHeadList<<"籍贯";
        // 设置对应的表头信息
        ui->tableWidget->setHorizontalHeaderLabels(horizonHeadList);
        // 表头自由变化
        ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

 3,TableWidget追加一行内容

void myWidget::appendOneRow(QString name,QString gender,int age,QString provice){
    //    当前的行数
    int count = ui->tableWidget->rowCount();
    //    对设置行数为1
    ui->tableWidget->setRowCount(count+1);
    //    增加对应的Item
    QTableWidgetItem * names = new QTableWidgetItem(name);
    //    文中的对其显示
    names->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * genders = new QTableWidgetItem(gender);
    genders->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * ages = new QTableWidgetItem(QString::number(age));
    ages->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * provices = new QTableWidgetItem(provice);
    provices->setTextAlignment(Qt::AlignCenter);

    // 设置对应的row的值
    ui->tableWidget->setItem(count,0,names);
    ui->tableWidget->setItem(count,1,genders);
    ui->tableWidget->setItem(count,2,ages);
    ui->tableWidget->setItem(count,3,provices);

}

4,TableWidget在行row中的处增加一行数据

void myWidget::insertOneRow(int count, QString name, QString gender, int age, QString provinces)
{
    ui->tableWidget->insertRow(count);


    QTableWidgetItem * names = new QTableWidgetItem(name);
    names->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * genders = new QTableWidgetItem(gender);
    genders->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * ages = new QTableWidgetItem(QString::number(age));
    ages->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * provincess = new QTableWidgetItem(provinces);
    provincess->setTextAlignment(Qt::AlignCenter);
    ui->tableWidget->setItem(count,0,names);
    ui->tableWidget->setItem(count,1,genders);
    ui->tableWidget->setItem(count,2,ages);
    ui->tableWidget->setItem(count,3,provincess);
}

5.TableWidget在删除指定row中的处的一行数据

void myWidget::on_pushButton_4_clicked()
{
    int current_row = ui->tableWidget->currentRow();
    ui->tableWidget->removeRow(current_row);
}

6.TableWidget修改表中的内容

void myWidget::on_pushButton_5_clicked()
{
    QString name = ui->lineEdit->text();
    QString gender = ui->lineEdit_2->text();
    int age = ui->lineEdit_3->text().toInt();
    QString province = ui->lineEdit_4->text();
    QTableWidgetItem * names = new QTableWidgetItem(name);
    names->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * genders = new QTableWidgetItem(gender);
    genders->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * ages = new QTableWidgetItem(QString::number(age));
    ages->setTextAlignment(Qt::AlignCenter);
    QTableWidgetItem * provincess = new QTableWidgetItem(province);
    provincess->setTextAlignment(Qt::AlignCenter);
    int count = ui->tableWidget->currentRow();
    ui->tableWidget->setItem(count,0,names);
    ui->tableWidget->setItem(count,1,genders);
    ui->tableWidget->setItem(count,2,ages);
    ui->tableWidget->setItem(count,3,provincess);
}

7,TableWidget在输入行中的内容添加到表中

void myWidget::on_pushButton_3_clicked()
{
    QString name = ui->lineEdit->text();
    QString gender = ui->lineEdit_2->text();
    int age = ui->lineEdit_3->text().toInt();
    QString province = ui->lineEdit_4->text();
    int currentrow = ui->tableWidget->currentRow();
    insertOneRow(currentrow,name,gender,age,province);
}

8,TableWidget将表中的指定的item中的数据添加到显示行中

void myWidget::onItemclicked(QTableWidgetItem *item)
{
    int rows =item->row();
    QString name = ui->tableWidget->item(rows,0)->text();
    QString gender = ui->tableWidget->item(rows,1)->text();
    QString age = ui->tableWidget->item(rows,2)->text();
    QString province = ui->tableWidget->item(rows,3)->text();

    ui->lineEdit->setText(name);
    ui->lineEdit_2->setText(gender);
    ui->lineEdit_3->setText(age);
    ui->lineEdit_4->setText(province);
}

9,TableWidget指定选择是选择一行内容还是Cell

SingleSelection1当用户选择一个项目时,任何已选择的项目都将被取消选择。用户可以通过在单击所选项目时按 Ctrl 键来取消选择所选项目。
ContiguousSelection4当用户以常规方式选择项目时,将清除所选内容并选中新项目。但是,如果用户在单击项目时按 Shift 键,则当前项目和单击的项目之间的所有项目都将处于选中或取消选中状态,具体取决于单击项目的状态。
ExtendedSelection3当用户以常规方式选择项目时,将清除所选内容并选中新项目。但是,如果用户在单击某个项目时按 Ctrl 键,则单击的项目将切换,而所有其他项目保持不变。如果用户在单击某个项目时按 Shift 键,则当前项目和单击的项目之间的所有项目都将被选中或取消选择,具体取决于所单击项目的状态。通过将鼠标拖动到多个项目上,可以选择多个项目。
MultiSelection2当用户以常规方式选择某个项目时,该项目的选择状态将切换,其他项目将保持独立状态。通过将鼠标拖到多个项目上,可以切换它们。
NoSelection0无法选择项目。

QAbstractItemView::SelectItems0选择单个项目。
QAbstractItemView::SelectRows1仅选择行。
QAbstractItemView::SelectColumns2仅选择列。

void myWidget::onSelectionRadioButtonClicked(){
    int id = mybuttonGroup->checkedId();
    if(id==0){
        // 属性控制用户是否可以选择一个或多个项目,以及在多项目选择中,选择是否必须是连续的项目范围
        ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
        // 此属性保存是否根据单个项目、行或列进行选择。
        ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
    }else{
        ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
        ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    }
}

10,行头或者列头是否进行显示

         if(ui->tableWidget->horizontalHeader()->isHidden()){
                ui->checkBox->setChecked(false);
         }else {
                ui->checkBox->setChecked(true);
        }
        
        connect(ui->checkBox,&QCheckBox::stateChanged,this,[=](int state){
        if(state==Qt::Checked){
            // 头的显示
            ui->tableWidget->horizontalHeader()->show();
         }else{
            // 不显示
            ui->tableWidget->horizontalHeader()->hide();
         }
        });


        // 列头进行显示
        if(ui->tableWidget->verticalHeader()->isHidden()){
             ui->checkBox_2->setChecked(false);
        }else {
             ui->checkBox_2->setChecked(true);
        }

        connect(ui->checkBox_2,&QCheckBox::stateChanged,this,[=](int state){
            if(state==Qt::Checked){
                   ui->tableWidget->verticalHeader()->show();
            }else{
                   ui->tableWidget->verticalHeader()->hide();
            }
        });

11,改变背景页颜色

         if(ui->tableWidget->alternatingRowColors()){
            ui->checkBox_3->setChecked(true);
         }else{
            ui->checkBox_3->setChecked(true);
         }
         connect(ui->checkBox_3,&QCheckBox::stateChanged,this,[=](int state){
            if(state==Qt::Checked){
                   ui->tableWidget->setAlternatingRowColors(true);
            }else{
                   ui->tableWidget->setAlternatingRowColors(false);
            }
        });

12,是否是可以编辑

       // 单元格可编辑的
       int triggle = ui->tableWidget->editTriggers();
       if(triggle==QAbstractItemView::NoEditTriggers){
           ui->checkBox_4->setChecked(false);
       }else{
           ui->checkBox_4->setChecked(false);
       }

       connect(ui->checkBox_4,&QCheckBox::stateChanged,this,[=](int state){
           if(state==Qt::Checked){
               ui->tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked|
                                                QAbstractItemView::SelectedClicked|
                                                QAbstractItemView::EditKeyPressed);

           }else{
               ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
           }
       });

12,结果是否进行显示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值