【qt】QTableWidget 表格组件3

简介: 【qt】QTableWidget 表格组件

【qt】QTableWidget 表格组件2:https://developer.aliyun.com/article/1523072

五.删除功能

1.删除逻辑

通过获取当前光标在的单元格位置,来删除单元格所在的行。

2.获取当前选中的单元格

void MainWindow::on_actionDel_triggered()
{
    auto item=ui->tableWidget->currentItem();        
    ui->tableWidget->removeRow(item->row());
}

运行结果:

这样有个问题就是,当我们删除后,没有进行选择,但是还是可以删除,所以我们要进行是否被选中的判断。

3.判断单元格是否被选中

void MainWindow::on_actionDel_triggered()
{
    auto item=ui->tableWidget->currentItem();
    if(item->isSelected())
    {
       ui->tableWidget->removeRow(item->row());
    }
    
}

问题就被完美的解决了。

4.删除行

ui->tableWidget->removeRow(item->row());

六.查找功能

1.查找逻辑

我们是在行编辑器中去输入字符串,通过按钮来关联槽函数来进行包含查找,查找到就进行选中,同时来搞一个高亮显示。

2.查找字符

因为我们打算是在状态栏加lineeditpushbutton所以我们只能用代码来进行添加。

    lineFind=new QLineEdit;
    button=new QPushButton;
    label=new QLabel;
    
    statusBar()->addWidget(lineFind);
    statusBar()->addWidget(button);
    statusBar()->addWidget(label);
    
    lineFind->setMaximumWidth(200);
    button->setText("查找");
    connect(button,SIGNAL(clicked()),this,SLOT(onButtonFind()));//对按钮进行自己定义的槽函数关联

运行结果:

void MainWindow::onButtonFind()
{
    QString ret=lineFind->text().trimmed();//去除开头和结尾的空白符
    if(ret.length()>0)
    {
        //包含模式查找,返回的是一个容器链表
        auto items=ui->tableWidget->findItems(ret,Qt::MatchContains);
        //遍历所有查找到的结果将其设置为选中
        for(auto it=items.begin();it!=items.end();it++)
        {
            (*it)->setSelected(true);
        }
    }
}

3.设置选中

 //遍历所有查找到的结果将其设置为选中
        for(auto it=items.begin();it!=items.end();it++)
        {
            (*it)->setSelected(true);
        }

4.设置样式表

可以看成查到了牛马,但是这个颜色太浅了,我们可以来设置选中的样式表来高亮显示。

ui->tableWidget->setStyleSheet("selection-background-color:rgb(255,128,0)");

运行结果;

这就很清晰了,但是有个问题就是我们下次查询的时候,这些高亮还是在,所有我们要进行清除选中。

5.清除高亮

ui->tableWidget->clearSelection();//清除选中

这就很爽了,你们可以试试。

七.显示信息

1.显示逻辑

当我们随便选择一个单元格的时候,我们就在标签上,显示该单元格所在的一行信息。

2.信号

3.读出单元格的信息

void MainWindow::on_tableWidget_cellClicked(int row, int column)
{
    QString ret;
    for(int i=0;i<ui->tableWidget->columnCount();i++)
    {
        ret+=ui->tableWidget->item(row,i)->text()+"/";
    }
    label->setText(ret);
}

运行结果:

八.总结

表格的构建先列(表头)后行,每一个数据都是通过单元格进行设置。

其次就是对增删改查功能的设计的掌握。

人的一切痛苦,本质上都是对自己无能的愤怒。

相关文章
|
30天前
【qt】Tool Box组件
【qt】Tool Box组件
20 0
|
2天前
Qt安装之后添加或移除组件(Qt Creator 10.0.1)
Qt安装之后添加或移除组件(Qt Creator 10.0.1)
14 2
|
30天前
【qt】QTableWidget 表格组件2
【qt】QTableWidget 表格组件
24 0
|
30天前
【qt】QTableWidget 表格组件1
【qt】QTableWidget 表格组件
17 0
|
30天前
|
索引 Windows
【qt】QTreeWidget 树形组件2
【qt】QTreeWidget 树形组件
21 0
|
30天前
|
C++
【qt】QTreeWidget 树形组件1
【qt】QTreeWidget 树形组件
26 0
|
30天前
【qt】QListWidget 组件3
【qt】QListWidget 组件
11 0
|
30天前
【qt】QListWidget 组件2
【qt】QListWidget 组件
28 0
|
9天前
|
关系型数据库 MySQL 项目管理
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
|
9天前
|
SQL 关系型数据库 MySQL
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库