QTableWidget中添加QComboBox/QPushButton控件并响应控件点击

2023-05-16

QTableWidget是QT程序中常用的显示数据表格的空间,里面不仅仅可以添加文字,也可以添加控件,图片等等,此处以添加QCombobox和QPushButton举例,点击选择控件以后,可以获得哪一行哪一列的信息。

主要是以下几行代码:

//创建一个QComboBox控件
QComboBox *comBox_ = new QComboBox();
//设置QComboBox的item
comBox_->addItem("A");
comBox_->addItem("B");
comBox_->addItem("C");
//建立信号槽
connect(comBox_, SIGNAL(currentIndexChanged(QString)), this,SLOT(clickCombobox(QString)));
//将QComboBox控件设置到QTableWidget中
ui->tableWidget->setCellWidget(0, 0 ,comBox_);

//槽函数
void MyTableWidget::clickCombobox(QString text)
{
    QComboBox *comBox_ = dynamic_cast<QComboBox*>(this->sender());
    if(NULL == comBox_)
    {
        return;
    }
    int x = comBox_->frameGeometry().x();
    int y = comBox_->frameGeometry().y();
    QModelIndex index = ui->tableWidget->indexAt(QPoint(x, y));
    int row = index.row();
    int column = index.column();

    qDebug() << "选择第几行:" << row << "选择第几列:" << column;
    qDebug() << "选择内容:" << text;

    //接下来自定义要处理的
    //。。。。。。
}

上面是在QTableWidget中添加QCombobox的几行示例,完整MyTableWidget.cpp代码如下,包含添加QPushButton按键:

#include "MyTableWidget.h"
#include "ui_MyTableWidget.h"
#include <QComboBox>
#include <QPushButton>
#include <QDebug>

MyTableWidget::MyTableWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyTableWidget)
{
    ui->setupUi(this);

    //设置行数(此处为5)
    ui->tableWidget->setRowCount(5);

    //设置列数(此处为2)
    ui->tableWidget->setColumnCount(2);

    //设置充满表格宽度
    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);

    //设置列表内容
    setTableWidgetData();
}

MyTableWidget::~MyTableWidget()
{
    delete ui;
}

void MyTableWidget::setTableWidgetData()
{
    for(int i = 0 ; i < 5 ; i ++)
    {
        //创建一个QComboBox控件
        QComboBox *comBox_ = new QComboBox();
        //设置QComboBox的item
        comBox_->addItem("A");
        comBox_->addItem("B");
        comBox_->addItem("C");
        //建立信号槽
        connect(comBox_, SIGNAL(currentIndexChanged(QString)), this, SLOT(clickCombobox(QString)));
        //将QComboBox控件设置到QTableWidget中
        ui->tableWidget->setCellWidget(i, 0 ,comBox_);

        //创建一个QPushButton控件
        QPushButton *pushButton_ = new QPushButton();
        //设置按键显示文字
        pushButton_->setText("点击");
        //建立信号槽
        connect(pushButton_, SIGNAL(clicked(bool)), this, SLOT(clickButton()));
        //将QPushButton控件设置到QTableWidget中
        ui->tableWidget->setCellWidget(i, 1 ,pushButton_);
    }
}

void MyTableWidget::clickCombobox(QString text)
{
    QComboBox *comBox_ = dynamic_cast<QComboBox*>(this->sender());
    if(NULL == comBox_)
    {
        return;
    }
    int x = comBox_->frameGeometry().x();
    int y = comBox_->frameGeometry().y();
    QModelIndex index = ui->tableWidget->indexAt(QPoint(x, y));
    int row = index.row();
    int column = index.column();

    qDebug() << "选择第几行:" << row << "选择第几列:" << column;
    qDebug() << "选择内容:" << text;

    //接下来自定义要处理的
    //。。。。。。
}

void MyTableWidget::clickButton()
{
    QPushButton *pushButton_ = dynamic_cast<QPushButton*>(this->sender());
    if(NULL == pushButton_)
    {
        return;
    }
    int x = pushButton_->frameGeometry().x();
    int y = pushButton_->frameGeometry().y();
    QModelIndex index = ui->tableWidget->indexAt(QPoint(x, y));
    int row = index.row();
    int column = index.column();

    qDebug() << "选择第几行:" << row << "选择第几列:" << column;

    //接下来自定义要处理的
    //。。。。。。
}

注:本Demo中采用的是带UI的,即包含MyTableWidget.ui,该ui中只拖入一个QTableWidget控件,然后进行栅格布局即可。

效果:

结尾:

只为记录,只为分享! 愿所写能对你有所帮助。不忘记点个赞,谢谢~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QTableWidget中添加QComboBox/QPushButton控件并响应控件点击 的相关文章

  • 教你如何实现带复选框的ComboBox(自定义QComboBox)

    Qt提供的QComboBox只能选择其中一个选项 无法实现同时选中多个 而实际工程项目中 下拉框中带复选框的需求比比皆是 阅读了网上大量的博客 但是没有发现一个能完美的实现该功能的ComboBox 都存在各种未解决的bug缺陷 样子是那么回
  • Qt

    Qt QListView QListWidget QTableView QTableWidget的使用示例及区别 目录 Qt QListView QListWidget QTableView QTableWidget的使用示例及区别 1 简
  • Qt QTableWidget使用记录

    去除选中虚线框 ui gt tableWidget gt setFocusPolicy Qt NoFocus Qt QTableWidget详解https blog csdn net wzz953200463 article details
  • QComboBox AbstractItemView::item

    有没有办法可以增加 QComboBox 控件中列出的项目的高度 我尝试按照此处的建议进行操作在 QTDevNet 论坛中但没有运气 QComboBox QAbstractItemView item margin top 3px 我也尝试过这
  • Python - PyQt - QTable Widget - 添加行

    我是 PyQt 的新手 无论如何仍然有点困惑 我有一个像这样的文本文件结构 姓名 姓氏 电话 电子邮件 空格实际上是制表符 t 现在当我用我的方法读取这个文件时 我希望填充 QTableWidget 我的 QTable Widget 有 4
  • QComboBox下拉列表-设置选中项样式

    是否可以设置QComboBox下拉列表的所选项目样式 Qt样式表 解决办法是 创建一个ListView对象 设置其样式表 使用它作为 ComboBox 的视图 具体方法如下 int main int argc char argv QAppl
  • 从 QTableWidget 读取选定的项目

    如何从 QTableWidget 读取选定的项目 Thanks int QTableWidget currentRow const返回当前项目的行 int QTableWidget currentColumn const返回当前项目的列
  • 如何从 qcombobox 获取 itemdata?

    当我单击 QtWidgets QPushButton 以显示 QtWidgets QComboBox 中的 itemData 时 出现问题 我用以下代码填充我的组合框 self comboBox addItem Sandro 1 self
  • 在 QTableWidget 中选择行和列,同时保持突出显示

    我设置了一个 QTableWidget 您无法选择单元格 但可以通过标题选择行 列 我遇到的问题是 当我选择一行时 它会取消选择已选择的任何列 列 行也是如此 我希望能够选择具有 ExtendedSelection 行为的行和具有 Sing
  • 如何在 PyQt5 Python 中根据窗口大小调整 PyQt5 堆叠小部件的大小?

    我正在设计一个ui in qt desginer 我必须创建一个用户界面 其中有一个带有按钮的侧面菜单栏 无论按下哪个按钮 其相应的数据都会显示在右侧 为了设计这个 我放置了两个QFrame in horizontal layout在中央小
  • 在 pyqt 中禁用 QComboBox

    是否可以禁用QComboBox在 pyqt 中 就像我们可以在 Win Forms C 中一样 因为我在QComboBox手动的 我想启用QcomboBox仅当管理员登录时 我找到了我的问题的答案 QComboBox setEnabled
  • 如何设置 QComboBox 宽度以适合最大的项目?

    我有一个QComboBox我充满了QString using comboBox gt addItem someString 当我启动 GUI 应用程序时 QComboBox始终为 70 即使最小的项目要大得多 如何动态设置a的宽度QComb
  • 如何将文本与 QTableWidget 中的单元格中心对齐

    我正在使用基于 Qt4 的 PyQt 我的编辑器是 PyCharm 2017 3 我的 python 版本是 3 4 我正在从网站上抓取一些文本 我试图将该文本与 QTableWidget 中单元格的中心对齐 item QTableWidg
  • 如何通过拖动 Widget 的角来调整 Widget 上的 QTableWidget 大小

    我想调整大小QTableWidget通过拖动右下角 如下面的屏幕截图所示 这个怎么做 这是我的代码 code from PySide QtGui import QApplication QWidget QTableWidget week m
  • 单击 QPushButton 时,它会触发两次

    我在一个项目中使用了 PyQt5 并有以下片段 button是一个 QPushButton def on receive self query print receiving query datapackages json loads qu
  • Python PyQt - QTableWidget、JSON 和 emitSignal 导致空白单元格

    我将 PyQt 用于一个简单的应用程序 该应用程序从包含 JSON 格式字符串的日志文件中读取数据 并将它们很好地输出到表中 一切都按预期工作 除非我尝试从 加载 函数发出信号 该信号由主窗口拾取 位于一个设计为用新信息重新排列表的槽中 如
  • 设置小部件背景颜色

    I use QCheckBox in QTableWidgetCell QWidget widget new QWidget QCheckBox checkBox new QCheckBox QHBoxLayout layout new Q
  • 如何从 QListWidget 拖放到 ComboBox 中

    目标是能够将 ListWidget 项目拖放到组合框上 掉落的项目应添加到组合框中 理想情况下 我们希望避免读取 listWidget 的 currentItem 或 selectedItems 等的任何技巧 有想法吗 from PyQt4
  • QComboBox 是否可以显示与其列表中不同的值?

    在 Linux 上使用 Qt 5 9 我有一个带有多个标签的 QComboBox qc new QComboBox qc gt addItem tr Red qc gt addItem tr Green qc gt addItem tr B
  • Qt - 如何将数据与 QTableWidgetItem 关联?

    我想将附加数据与插入表中的每个 QTableWidgetItem 相关联 以便将来在单击表项时使用该数据 但这些数据不应该是可见的 我怎样才能做到这一点 您可以使用QTableWidgetItem setData http doc qt i

随机推荐

  • SpringBoot无法访问static文件夹 404问题

    使用spring boot 配置好后端 导入前端页面到resources 61 gt static 文件夹后 无法访问 但此时进入调试模式 访问controller的路径时 发现后台已经传送出去json数据 64 RequestMappin
  • Ubuntu虚拟机反复在登录界面循环问题

    登录Ubuntu的时候发现登录界面不对劲 xff0c 之前从来没有看到过 而且无法登录 xff0c 反复在登录界面循环 百度 xff0c 说原因有两个 xff1a 1 环境变量修改有问题 xff1b 2 显卡驱动有问题 xff1b 均尝试数
  • pycharm设置笔记

    目录 区分级别显示高亮日志 区分级别显示高亮日志 效果 设置log highlighting里填入 s E RROR s 即可 s E RROR s
  • Ubuntu设置开机自启动

    文章目录 前言一 基本概念二 操作步骤1 终端输入2 设置路径 总结 前言 本文介绍如何在Ubuntu设置开机自启动 一 基本概念 除了系统上配置的默认启动应用程序之外 xff0c gnome session properties 程序使用
  • uniapp 发布网站遇到的问题(跨域,nginx代理失败,index无法打开,手机端无法访问等)

    跨域 如果开发的应用直接是作为手机APP是不存在跨域问题的 xff0c 但是如果是网站形式就要考虑这个问题了 分为两点 xff1a 1 调试时 可通过设置maintest 2 发布后 可通过Nginx配置文件设置代理 nginx代理失败 1
  • 怎么在linux上安装vnc

    1 首先检查是否安装了VNC服务 输入命令 xff1a rpm qa grep vnc 2 安装VNC xff0c 首次执行vncserver需要设置密码 xff0c 可以创建多个桌面 xff0c 执行多次vncserver命令即可 roo
  • VNC修改端口号

    1 vnc的默认端口是自己配置的 xff0c 想要修改vncserver的配置 xff0c 需要先找配置文件路径 root 64 node04 which vncserver usr bin vncserver 2 通过查找以前配置的端口
  • onNewIntent使用遇到的坑

    onCreate是用来创建一个Activity也就是创建一个窗体 xff0c 但一个Activty处于任务栈的顶端 xff0c 若再次调用startActivity去创建它 xff0c 则不会再次创建 若你想利用已有的Acivity去处理别
  • CentOS7使用firewall-cmd打开关闭防火墙与端口

    一 centos7版本对防火墙进行加强 不再使用原来的iptables 启用firewalld 1 firewalld的基本使用 启动 xff1a systemctl start firewalld 查状态 xff1a systemctl
  • 算法数学基础-排列组合(题目取自牛客网)

    基础理论 xff1a 排列 有限集的子集按某种条件的序化法排成列 排成一圈 不许重复或许重复等 从n个不同元素中每次取出m xff08 1 m n xff09 个不同元素 xff0c 排成一列 xff0c 称为从n个元素中取出m个元素的无重
  • 关于对Spring框架的详解

    Spring框架 基本概念Spring的形成主要模块三层架构Spring的优点对于Spring 框架中都用到设计模式 xff1a 基本概念 Spring框架是由于软件开发的复杂性而创建的 Spring使用的是基本的JavaBean来完成以前
  • vs2015 提示严重性代码说明项目文件行禁止显示状态 错误C4996 'scanf': This function or variable may be unsafe.

    在 vs2015 中使用scanf时总是提示 unsafe 报出错误 xff0c 解决办法是在已经建立的项目中 xff0c 以后可能需要经常进行再不同的项目进行这项操作 xff1a 项目 gt 属性 gt c c 43 43 gt 常规 g
  • base7. ThreadPool线程池类——生产者与消费者模型

    ThreadPool类图 数据成员 xff1a MutexLock mutex xff1a 一个MutexLock类型的互斥变量mutex Condition cond xff1a 一个Condition类型的条件变量cond string
  • Ubuntu下anaconda中PyCharm遇到的环境问题

    Table of Contents 运行找不到包文件 可以run xff0c 不能debug 运行找不到包文件 解救办法 xff1a 将包的路径添加到interpreter中 可以run xff0c 不能debug 去掉setting中py
  • origin画图——同一图中多组数据

    origin画图 同一图中多组数据 xff08 2维 xff09 导入数据分别确定X Y轴列数据 xff08 选中列 set as X Y xff0c 全选数据 xff0c 点击下方绘图图标
  • pacman用法

    Pacman 是archlinux 下的包管理软件 它将一个简单的二进制包格式和易用的构建系统结合了起来 不管软件包是来自官方的 Arch 库还是用户自己创建 xff0c Pacman 都能方便得管理 pacman Sy abc 和源同步后
  • Spring注解-1-SpringBoot是如何处理注解的

    本文基于Spring 5 2 7 这是个很大的话题 xff0c 但是是个非常实在的话题 xff0c 注解天天用 xff0c 处处用 xff0c 请问你知道他是怎么起作用的吗 xff1f 如果你使用了注解 xff0c 那么一定有代码在什么地方
  • Qt对当前界面进行截图并保存

    Qt提供了对界面截图的功能 xff0c 非常简单 xff0c 只需要2行即可截图并保存下来 xff0c 如下 xff1a QPixmap pixMap 61 QPixmap grabWidget this pixMap save 34 my
  • Qt中通过Qpixmap设置图片透明度

    最近看到美图秀秀的一些功能 xff0c 可以手动设置图片的透明度并显示在其它图片上 xff0c 所以自己动手做了个小Demo xff0c 实际效果如下 xff1a xff08 图片仅供参考使用 xff09 可以看到拖动下方进度条 xff0c
  • QTableWidget中添加QComboBox/QPushButton控件并响应控件点击

    QTableWidget是QT程序中常用的显示数据表格的空间 xff0c 里面不仅仅可以添加文字 xff0c 也可以添加控件 xff0c 图片等等 xff0c 此处以添加QCombobox和QPushButton举例 xff0c 点击选择控