首页 > 其他分享 >qtablewidget中添加按钮并信号槽

qtablewidget中添加按钮并信号槽

时间:2022-12-01 09:37:05浏览次数:53  
标签:qtablewidget tableWidget 添加 ui QPushButton 按钮 new border 255

需要在cell中增加按钮。

主要代码(没写类名):

void InsertTableInfo(const QStringList &listInfo, bool bChecked)
{
    int nRowCount = ui->tableWidget->rowCount();
    ui->tableWidget->setRowCount(nRowCount + 1);
    ui->tableWidget->setRowHeight(nRowCount, 60);

    for(int i = 0; i < listInfo.size(); i++)
    {
        if(i == 9){//按钮所在列
            SetItem(ui->tableWidget, nRowCount, i + 1);
            continue;
        }
        QTableWidgetItem* item = new QTableWidgetItem(listInfo.at(i));
        item->setTextAlignment(Qt::AlignCenter);
        ui->tableWidget->setItem(nRowCount, i + 1, item);
    }
}

void SetItem(QTableWidget *table, int row, int column)
{
    QWidget* pWidget = new QWidget(table);
    QHBoxLayout *hLayout = new QHBoxLayout(pWidget); //创建布局
    QPushButton *pBtnDraw = new QPushButton(ui->tableWidget);
    QPushButton *pBtnModify = new QPushButton(ui->tableWidget);
    QPushButton *pBtnDelete = new QPushButton(ui->tableWidget);
    SetBtnStyle(pBtnDraw, "31,110,212", "绘制");
    SetBtnStyle(pBtnModify, "30,227,207", "修改");
    SetBtnStyle(pBtnDelete, "204,153,0", "删除");
    hLayout->addWidget(pBtnDraw);
    hLayout->addWidget(pBtnModify);
    hLayout->addWidget(pBtnDelete);
    hLayout->setContentsMargins(0, 0, 0, 0);//

    connect(pBtnDraw,SIGNAL(clicked()),this,SLOT(SlotBtnClicked()));  // 添加  按钮 点击处理
    connect(pBtnModify,SIGNAL(clicked()),this,SLOT(SlotBtnClicked()));
    connect(pBtnDelete,SIGNAL(clicked()),this,SLOT(SlotBtnClicked()));

    table->setCellWidget(row,column,pWidget);
}

void SetBtnStyle(QPushButton *pBtn, QString clr, QString btnTxt)//注意qstring clr的格式写法
{
    pBtn->setText(btnTxt);
    QString style = QString("QPushButton{min-height:40px;font-size:22px;color:rgb(255, 255, 255);background:rgba(%1,0.8);border:1px;border-radius:20px;padding:2px 2px;font-family:Microsoft YaHei;}"
    "QPushButton:hover{color:rgb(255, 255, 255);border-style:solid;background: rgba(%2,0.6);border-radius:20px;border:1px;font-family:Microsoft YaHei;}"
    "QPushButton:pressed{color:rgb(255, 255, 255);border-style:solid;border-radius:20px;background: rgba(%3,0.4);border:1px;font-family:Microsoft YaHei;}").arg(clr).arg(clr).arg(clr);
    pBtn->setStyleSheet(style);
}

void SlotBtnClicked()//槽函数
{
    QPushButton *senderObj = qobject_cast<QPushButton*>(sender());
    if (senderObj == nullptr)
    {
        return;
    }
    QModelIndex idx = ui->tableWidget->indexAt(QPoint(senderObj->parentWidget()->frameGeometry().x(), senderObj->parentWidget()->frameGeometry().y()));
    int row = idx.row();
    QString btnTxt = senderObj->text();
    if(btnTxt.compare("绘制") == 0){
        qDebug() << QString("按下第 %1 行 绘制 按钮").arg(row);
    }
    else if (btnTxt.compare("修改") == 0) {
        qDebug() << QString("按下第 %1 行 修改 按钮").arg(row);
    }
    else if (btnTxt.compare("删除") == 0) {
        qDebug() << QString("按下第 %1 行 删除 按钮").arg(row);
    }
    else {
        qDebug() << "错误";
    }
}

 

标签:qtablewidget,tableWidget,添加,ui,QPushButton,按钮,new,border,255
From: https://www.cnblogs.com/warmlight/p/16940440.html

相关文章

  • Linux添加磁盘及如何使用
    一、系统添加磁盘步骤及命令服务器添加磁盘一共分为一下四步,我们将按以下步骤详细介绍如何在服务器上添加磁盘并使用。①添加硬件②磁盘分区③格式化磁盘④挂载磁盘1......
  • Teamcenter AWC6.2 添加分类管理模块支持
    1.安装AWC基本模块,配置搜索ConfiguretraditionalbasicclassificationIfyouhaveatraditionalbasicclasshierarchyanddatainrichclient,youcane......
  • ESXI系统盘制作及安装和添加虚拟机操作步骤
    一、先将VMware-VMvisor-Installer-7.0U2a-17867351.x86_64.iso做成系统盘1、双击打开UltraISO.exe  2、点击文件—>打开,找到EXSI镜像文件,鼠标选中,点击打开。  3......
  • Spring Boot中添加Thymeleaf模板
    SpringBoot中添加Thymeleaf模板前面我们讲解了SpringBoot项目的创建、SpringBoot结构信息,自动配置功能等,那么Springboot创建出来,我们最终是要做web开发的,所以我们这章讲......
  • Spring Boot中添加Thymeleaf模板
    SpringBoot中添加Thymeleaf模板前面我们讲解了SpringBoot项目的创建、SpringBoot结构信息,自动配置功能等,那么Springboot创建出来,我们最终是要做web开发的,所以我们这......
  • 淘淘商城商品类目展示添加缓存
    一、分析在不影响原有的逻辑上,添加缓存,分为两块,一块是执行结果后存储缓存,一块是在执行之前调用缓存二、缓存添加1.打开taotao-rest工程,找到商品类目展示的service(ItemCat......
  • 重构后台的django项目目录、配置开发环境、添加环境变量
    重构项目目录celery_task:logs:项目运行时/开发时日志目录包luffapi:项目同名文件夹apps:项目所有应用的集合文件夹libs:第三方类库的保存目录[第三方组件、模块]-包......
  • antd-design-vue的table中获取到其他列的数据,并添加样式
    获取其他列的数据{title:'价格(元)',align:"center",dataIndex:'',scopedSlots:{customRender:'price'},//customRender:(text,record)=>{......
  • 小程序可拖动按钮 movable-area
    如果全屏拖动的话,movable-area会覆盖下层元素,所以就把拖动条放到页面右侧,内部元素大于拖动区域就不会出现需要点击事件穿透问题,缺点是只能在边上并且只能上下或者左右拖动......
  • .NET 6使用ImageSharp给图片添加水印
    ​.NET6中,使用System.Drawing操作图片,生成解决方案或打包的时候,会有警告,意思是System.Drawing仅在'windows'上受支持。微软官方的解释是:System.Drawing.CommonNuGet......