关于在Qt中tableWidget表格中有按钮或者chebox选择点击事件

这篇具有很好参考价值的文章主要介绍了关于在Qt中tableWidget表格中有按钮或者chebox选择点击事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里以checkbox为例:

基本思路:使用槽函数监听checkBox的改变,获取点击checkBox所在的行数和列数

//设置表头信息
void SystemMngForm::initNetConfigTableAttr()
{
    ui->tableWidget->setWordWrap(true);
    ui->tableWidget->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter);
    ui->tableWidget->verticalHeader()->hide();

    fileItem = new QTableWidgetItem(QString(""));
    ui->tableWidget->setHorizontalHeaderItem(0, fileItem);
    fileItem = new QTableWidgetItem(tr(u8"名称"));
    ui->tableWidget->setHorizontalHeaderItem(1, fileItem);

    fileItem = new QTableWidgetItem(tr(u8"地址"));
    ui->tableWidget->setHorizontalHeaderItem(2, fileItem);

    fileItem = new QTableWidgetItem(tr(u8"checkBox"));
    ui->tableWidget->setHorizontalHeaderItem(3, fileItem);
    
    ui->tableWidget->setAutoScroll(true);
    //每个元素居中
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    //单个选择
    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
    //失去焦点
    ui->tableWidget->setFocusPolicy(Qt::NoFocus);

    //自适应表头
    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    
    
    
}
//显示数据,里面有checkBox控件嵌套
void SystemMngForm::showNetConfigInfo()
{
    ui->tableWidget->setColumnCount(8);
    ui->tableWidget->setRowCount(2);

    for(int i = 0; i < 2; i++)
    {
        item = new QTableWidgetItem(QString(""));
        ui->tableWidget->setItem(i, 0, item);
        
        item = new QTableWidgetItem(u8"网口");
        item->setTextAlignment(Qt::AlignCenter);
        ui->tableWidget->setItem(i, 1, item);

        item = new QTableWidgetItem(u8"127.0.0.1");
        item->setTextAlignment(Qt::AlignCenter);
        ui->tableWidget->setItem(i, 2, item);

        checkBoxWidget= new Widget;
        checkBoxLayout = new QHBoxLayout();
        checkBox = new QCheckBox();
        checkBoxLayout ->addWidget(checkBox);
        //一定要设置为0,否则很难看
        checkBoxLayout->setMargin(0);
        checkBoxLayout->setAlignment(checkBox, Qt::AlignCenter);
        checkBoxWidget->setLayout(checkBoxLayout);
        ui->tableWidget->setCellWidget(i, 3, checkBoxWidget);
        
        //槽函数,stateChange(int)为checkBox的信号
        connect(checkBox, SIGNAL(stateChange(int)), this, SLOT(checkBoxChange(int));
        
    }
        initNetConfigTableAttr();
    
}

槽函数文章来源地址https://www.toymoban.com/news/detail-753683.html

void SystemMngForm::checkBoxChange(int)
{
    //全局变量,行和列
    checkBoxRow = 0;
    checkBoxColumn = 0;

    //
    QCheckBox *checkBox = dynamic_cast<QCheckBox *>(this->sender());
    if(checkBox = nullptr)
        return;
    
    //坐标转换获取坐标
    int x = checkBox->parentWidget()->frameGeometry().x();
    int y = checkBox->parentWidget()->frameGeometry().y();
    QModelIndex index = ui->tableWidget->indexAt(QPoint(x, y));
    int row = index.row();
    int column = index.column();
    
    qDebug()<<"row"<<row<<"column"<<column;

    //通过row、column找到控件
    QWidget *wig = ui->tableWidget->cellWidget(row, column);
    checkBox = wig->findChild<QCheckBox *>();
    if(checkBox->isChecked())
    {
        checkBoxRow = row;
        checkBoxColumn = column;
        qDebug)<<"checkBoxRow"<<checkBoxRow<<"checkBoxColumn"<<checkBoxColumn;
    }
}

到了这里,关于关于在Qt中tableWidget表格中有按钮或者chebox选择点击事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1、关于Element-UI日期范围选择器控件添加清空、确定按钮

    1、日期控件原来样式 现在我们需要在日期控件右下角添加按钮(如下方示例) 2、实现方式

    2024年02月16日
    浏览(46)
  • 关于 Qt在windows使用mingw32编译器时从Qt5.9切换至Qt5.12出现“C2001:常量中有换行符“不修改编码 的解决方法

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131901444 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)   研发项目先

    2024年02月15日
    浏览(55)
  • Qt--tableWidget相关操作

    1.获取当前选中的行数 所用函数:QModelIndex currentIndex() const; 2.取出当前选中行的内容 所用函数:QTableWidgetItem *item(int row, int column) const;

    2024年02月10日
    浏览(28)
  • QT tableWidget的简单使用

    1、不能对表格内容进行修改 设置某一列不可编辑 2、设置表格为整行选择 3、设置隐藏表头和列头 隐藏列 4、加入控件 5、列可扩展 6、单元格字体居中 7、获取行数和列数 8、右键使能,在给widget加菜单时,需要加入此行代码 9、给QTableWidget添加控件 10、获取当前点击的控件在

    2024年02月13日
    浏览(42)
  • 关于图形界面Pyqt与QT的区别选择

            关于图像界面(GUI)想必大家都并不陌生,想要将一段已经完善的功能列表进行可视化操作并且具有一定的操作空间,将功能可视化必不可少,一个好的可视化工具不仅可以集成一系列小的文件功能,还能将不同方法之间的调用联系起来,形成良好的系统整理功能。

    2023年04月13日
    浏览(78)
  • QT 实现tablewidget整行的上下移动和双击编辑

    一、效果展示 二、实现方法 1、先对tablewidget设置 2、实现行的上下移动 主要实现方式是通过交换两行的数据来实现的 下面这两句主要实现选择行跟随移动的行

    2024年02月11日
    浏览(51)
  • 【PyQt5】Qt Designer系列-----tableWidget部件设置使用教程

    注意不要选错部件tableView了!!! (1)选中tableWidget部件右键“编辑项目”打开 (2)设置行、列的间隔 (3)去掉行或列索引 (4)设置列左对齐或居中(默认居中) (5)设置标题之间的间隔 选中tableWidget部件右键“改变样式表” (1)设置选中显示背景颜色 (2)设置拉条

    2024年02月16日
    浏览(51)
  • MySQL基础扎实——MySQL中有那些不同的表格

    在MySQL中,常见的表格类型有以下几种: MyISAM :是MySQL默认的表格类型,具有较高的性能和较小的存储空间占用。但是,MyISAM不支持事务、崩溃恢复和数据行级锁定。 InnoDB :是MySQL提供的一个更强大和可靠的表格类型。它支持事务、崩溃恢复和数据行级锁定,具有较好的并发

    2024年02月15日
    浏览(36)
  • HTML中有哪些属于表单元素?那些属于表格元素?请分别列举5个并说明用途?

    在HTML中,有一些元素是专门用于表单的输入和布局,还有一些元素是专门用于表格的显示。以下是五个表单元素和五个表格元素,以及它们的用途: 表单元素: input :这是最常用的表单元素,用于获取用户输入的数据。可以通过不同的\\\"type\\\"属性值(如\\\"text\\\", \\\"password\\\", \\\"submit

    2024年01月22日
    浏览(48)
  • Unity Web 浏览器-3D WebView中有关于CanvasWebViewPrefab

    这个是在2_CanvasWebViewDemo示例场景文件中可以可以查看得到,可以看出CanvasWebViewPrefab的默认配置如下。 1、如果你勾选了以下这个Native 2D Mode选项的话,那么Unity默认就是网页的显示层级大于Unity内置UI以及3D物体的渲染层级。 如果你没勾选Native 2D Mode选项的话,那么Unity默认就是

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包