首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让QTableWidget中的单元格只读?

要让QTableWidget中的单元格只读,您可以使用以下方法:

  1. 禁用单元格编辑:

您可以通过设置单元格的编辑标志(Qt::ItemIsEditable)为false来禁用单元格编辑。这可以通过重载QTableWidget的flags()函数来实现。

示例代码:

代码语言:cpp
复制

Qt::ItemFlags MyTableWidget::flags(const QModelIndex &index) const {

代码语言:txt
复制
   Qt::ItemFlags flags = QTableWidget::flags(index);
代码语言:txt
复制
   flags.setFlag(Qt::ItemIsEditable, false);
代码语言:txt
复制
   return flags;

}

代码语言:txt
复制
  1. 使用事件过滤器:

您可以使用事件过滤器来阻止单元格的编辑。这可以通过重载QTableWidget的eventFilter()函数并捕获QEvent::KeyPress事件来实现。

示例代码:

代码语言:cpp
复制

bool MyTableWidget::eventFilter(QObject object, QEvent event) {

代码语言:txt
复制
   if (event->type() == QEvent::KeyPress) {
代码语言:txt
复制
       QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
代码语言:txt
复制
       if (keyEvent->key() == Qt::Key_Tab || keyEvent->key() == Qt::Key_Backtab) {
代码语言:txt
复制
           return true;
代码语言:txt
复制
       }
代码语言:txt
复制
   }
代码语言:txt
复制
   return QTableWidget::eventFilter(object, event);

}

代码语言:txt
复制
  1. 使用单元格的setEnabled()函数:

您可以使用单元格的setEnabled()函数将其设置为禁用状态,这将使单元格只读。

示例代码:

代码语言:cpp
复制

for (int row = 0; row< tableWidget->rowCount(); ++row) {

代码语言:txt
复制
   for (int col = 0; col< tableWidget->columnCount(); ++col) {
代码语言:txt
复制
       QTableWidgetItem *item = tableWidget->item(row, col);
代码语言:txt
复制
       if (item) {
代码语言:txt
复制
           item->setFlags(item->flags() & ~Qt::ItemIsEditable);
代码语言:txt
复制
           item->setEnabled(false);
代码语言:txt
复制
       }
代码语言:txt
复制
   }

}

代码语言:txt
复制

这些方法可以帮助您实现QTableWidget中的单元格只读。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性

QTableWidget介绍 QTableWidget是Qt程序中常用显示数据表格控件,类似于c#DataGrid。...用来表示表格一个单元格,整个表格就是用各个单元格构建起来 QTableWidget常用方法 方法 描述 setROwCount(int row) 设置QTableWidget表格控件行数...(400,300) layout=QHBoxLayout() #实现效果是一样,四行三列,所以要灵活运用函数,这里只是示范一下如何单独设置行列 TableWidget=QTableWidget...优化3:将表格设置为禁止编辑 在默认情况下,表格字符是可以更改,比如双击一个单元格,就可以修改原来内容,如果想禁止这种操作,表格对用户只是只读,则可以编辑一下代码 TableWidget.setEditTriggers...优化7:在单元格内放置控件 QTableWidget不仅允许往单元格内放置文字,还允许放置控件,通过QTableWidget.setItem()来添加PyQt基本控件 这里把一个下拉列表框和一个按钮加入单元格

9.9K24
  • PyQt5高级界面控件之QTableWidget(四)

    大家好,又见面了,我是你们朋友全栈君。 QTableWidget 前言 QTableWidget是Qt程序中常用显示数据表格控件,类似于c#DataGrid。...用来表示表格一个单元格,整个表格就是用各个单元格构建起来 QTableWidget常用方法 方法 描述 setRowCount(int row) 设置QTableWidget表格控件行数...(QHeaderView.Stretch) 优化3:将表格设置为禁止编辑 在默认情况下,表格字符是可以更改,比如双击一个单元格,就可以修改原来内容,如果想禁止这种操作,表格对用户只是只读...(False) 优化7:在单元格内放置控件 QTableWidget不仅允许往单元格内放置文字,还允许放置控件,通过QTableWidget.setItem()来添加PyQt基本控件 这里把一个下拉列表框和一个按钮加入单元格...前言 QTableWidget常用方法 编辑规则枚举值类型 表格选择行为枚举值 单元格文本水平对齐方式 单元格文本垂直对齐方式 实例:QTableWidget基本用法 代码分析 实例二:在表格快速定位到指定行

    3.8K10

    Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

    目录 1、QTableView类 2、QListView类 3、QListWidet类 4、QTableWidget类 5、QTreeWidget和QTreeWidgetltem类 ---- 表格与树解决问题是如何在一个控件中有规律地呈现更多数据...类 QTableWidget是Qt程序中常用显示数据表格空间,类似于C#DataGrid。...QTableWidget是QTableView子类,它使用标准数据模型,并且其单元格数据是通过QTableWidgetltem 对象来实现。...使用QTableWidget时就需要QTableWidgetltem,用来表示表格一个单元格,整个表格就是用各单元格构建起来。...QTableWidget常用方法如下表所示: 编辑规则枚举值类型如下表所示: 表格选择行为枚举值类型如下表所示: 单元格文本水平对齐方式如下表所示: 单元格文本垂直对齐方式如下表所示

    3.1K20

    Qt学习笔记 TableWidget使用说明和增删改操作实现

    将表格变为禁止编辑 在默认情况下,表格里字符是可以更改,比如双击一个单元格,就可以修改原来内容,如果想禁止用户这种操作,这个表格对用户只读,可以这样:  tableWidget->setEditTriggers...QAbstractItemView::NoEditTriggers); QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚举一个...在单元格里加入控件: QTableWidget不仅允许把文字加到单元格,还允许把控件也放到单元格。...对单元格进行设置 1....获得单击单元格内容 通过实现 itemClicked (QTableWidgetItem *) 信号槽函数,就可以获得鼠标单击到单元格指针,进而获得其中文字信息 connect(tableWidget

    6.1K90

    如何统计某单元格数据行数?

    标签:Excel技巧 我们知道,在单元格输入数据时,我们可以通过按Alt+回车键来强制内容换行。然而,在Excel,有没有办法统计单元格究竟有几行数据呢?如下图1所示。...图1 可以使用公式来实现,在单元格B2输入公式: =LEN(A2)-LEN(SUBSTITUTE(A2,CHAR(10),""))+1 其中,CHAR(10)代表换行符。...将上述公式下拉复制,就可以得到其它单元格行数。 你可能会发现,对于空单元格,上述公式会返回结果1。我们可以对公式稍作调整,其对空单元格返回结果0。...调整后公式如下: =LEN(A2)-LEN(SUBSTITUTE(A2,CHAR(10),""))+(LEN(A2)>1) (感叹)在使用Excel过程,你可能会碰到很多千奇百怪问题,但Excel...我想,这恐怕也是Excel会这么迷人地方之一吧。 朋友们,你有什么使用Excel解决不寻常问题吗?欢迎留言分享。

    40420

    Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

    目录 1、QTableView类 2、QListView类 3、QListWidet类 4、QTableWidget类 5、QTreeWidget和QTreeWidgetltem类 ---- 表格与树解决问题是如何在一个控件中有规律地呈现更多数据...类 QTableWidget是Qt程序中常用显示数据表格空间,类似于C#DataGrid。...QTableWidget是QTableView子类,它使用标准数据模型,并且其单元格数据是通过QTableWidgetltem 对象来实现。...使用QTableWidget时就需要QTableWidgetltem,用来表示表格一个单元格,整个表格就是用各单元格构建起来。...QTableWidget常用方法如下表所示: 编辑规则枚举值类型如下表所示: 表格选择行为枚举值类型如下表所示: 单元格文本水平对齐方式如下表所示: 单元格文本垂直对齐方式如下表所示

    3.9K30

    PG只读账号授权操作

    日常工作,我们通常开给研发2个账号(一个只读账号,读写账号) 读写账号自不必说, ,每次用这个账号建表后,自然就用了CRUD权限。...但是,只读账号稍微费事点,如果我们处理不好的话,每次新加表都要再执行一次对只读账号重新授权操作。好在PG为我们考虑好了这个场景,也是有方法解决。...账号 \c ticket   -- 切换到ticket库下 grant select on all tables in schema public to rd ;   # 对rd账号授权,当前已有的表只读权限...对于后期新创建表,是没有加其它授权) alter role rd  set default_transaction_read_only=true;   -- 给rd用户设置只读模式 然后,我们使用rw..., rd账号都可以读取(注意: 如果使用postgres超级账号创建表的话,rd账号还是不能读取) 执行完上面的ALTER DEFAULT PRIVILEGES 命令操作后,使用rw账号再去创建一个新

    2.6K20

    问与答95:如何根据当前单元格值高亮显示相应单元格

    excelperfect Q:这个问题很奇怪,需要根据在工作表Sheet1输入数值高亮显示工作表Sheet2相应单元格。...具体如下: 在一个工作簿中有两个工作表Sheet1和Sheet2,要求在工作表Sheet1列A单元格输入一个值后,在工作表Sheet2从列B开始相应单元格会基于这个值高亮显示相应单元格。...例如,在工作表Sheet1单元格A2输入值2后,工作表Sheet2单元格B2开始两列单元格将高亮显示,即单元格B2和C2高亮显示;在工作表Sheet1单元格A3输入值3,工作表Sheet2...从B3开始三列单元格将高亮显示,即单元格B3、C3和D3加亮显示,等等。...欢迎在下面留言,完善本文内容,更多的人学到更完美的知识。

    3.8K20

    在 Python 如何快速创建一个只读字典?

    虽然这不是一个好习惯,但是对于少量数据来说,用字典无疑是最简单方便做法。但前提是,不要一不小心把字典里面的值给覆盖了。...我们知道,当我们向字典添加数据时候: a = {'name': 'kingname', 'salary': 99999} a['address'] = '上海' 当我们读取字典时候,一般写作: a...但代码并不会报错,如下图所示: 所以,我们是否有什么办法,实现一个一旦初始化,就不能修改字典呢? 实际上 Python自带了这个功能,就是types.MappingProxyType。...= 0 运行效果如下图所示: MappingProxyType像是挡在字典前面的一面盾牌,从前面是无法修改数据,但是,如果你确实需要修改数据,那么你可以直接修改原始字典,此时,修改会反映到 MappingProxyType...处理过对象上面,如下图所示: 这样,你在处理数据时,进可攻,退可守,可信任代码修改数据,防止不信任代码修改数据,一举两得。

    3.3K50

    TypeScript可选属性和只读属性

    可选属性 接口里属性不全都是必需。 有些是只在某些条件下存在,或者根本不存在。 例如给函数传入参数对象只有部分属性赋值了。...带有可选属性接口与普通接口定义差不多,只是在可选属性名字定义后面加一个?符号。如下所示: interface Person { name: string; age?...: number; } 上面的例子Person对象名字(name)是不可选,age和gender是可选只读属性 顾名思义就是这个属性是不可写,对象属性只能在对象刚刚创建时候修改其值。...你可以在属性名前用 readonly来指定只读属性,如下所示: interface User { readonly loginName: string; password: string...; } 上面的例子说明,当完成User对象初始化后loginName就不可以修改了。

    2.9K70

    Excel技巧:如何Excel待统计单元格显示为横杠?

    场景:适合公司人事、行政、财务、销售等进行专业统计办公人士。 问题:如何待统计单元格显示为横杠? 解答:利用Excel单元格格式设置功能搞定。 到底什么叫显示为横杠?...其实是一种类似软件统计一种专业表达方式。效果如下: ? 就是带公式单元格,在没有统计前,显示为一个横杠效果,显得非常高大上。如何设置呢?...然后选中下图中所有的“0”单元格,然后按Ctrl+1打开单元格格式设置,在自定义处,选择下图中系统自带格式类型。(下图2处) ? 设置完毕后,单元格变成横杠表现形式,是不是高大上了不少。...总结:所谓横杠就是用来代替公式或零值单元格显示。是一种比较专业数据表达方法,推荐大家掌握。 该技巧Excel2007版本及以上有效。

    2.3K20

    如何更改磁盘脱机、联机及只读状态?

    本文将详细介绍如何更改磁盘联机、脱机及只读状态。尽管本文中操作不会删除磁盘上数据,依然建议在进行任何磁盘状态更改操作前,请确保已备份重要数据。...一、将磁盘状态改为“脱机”:在DiskGenius,找到并右击需要修改状态磁盘,选择“更改设备状态”,然后点击“联机”。...二、将磁盘状态设置为“联机”:在DiskGenius,右击处于离线状态磁盘,在右键菜单中点击“更改设备状态”,然后勾选“联机”。之后,磁盘立刻变为“联机”状态。...三、将磁盘设置为“只读”模式:在DiskGenius,右击想要设置磁盘,点击“更改设备状态”,然后选择 “只读”。程序弹出如下提示。...四、解除磁盘只读模式:在DiskGenius软件,右击需要解除只读状态磁盘,在右键菜单中点击“更改设备状态”,然后点击“只读”选项,如下图所示:点击“确认“按钮,该磁盘将被解除“只读”模式。

    46410

    SQL 如何给指定数据库创建只读用户?

    在SQL Server ,为了保护数据库安全,需要给不同使用者开通不同访问用户,那么如何简单控制用户权限呢?下面我们就创建一个只读用户,给大家学习使用。...针对每一个数据库,在下方【数据库角色成员身份】,选择【db_datareader】,同时默认架构也选择【db_datareader】 6、这样,一个只读用户就建立好了,用此用户登录时,就只能对映射数据库进行只读访问了...添加只读用户查看存储过程权限 而当我们设置只给某些用户授权只读权限时(即public),这些用户可能需要查看sql存储过程;因此需要授权给它。...db_ddladmin 可以在数据库执行ddl操作用户,DDL(Data Definition Language)数据表创建以及管理 db_securityadmin 可以管理数据库与安全权限有关所有动作用户...不能修改数据库任何数据用户 以上就是今天分享给大家内容,可以自己动手试试,用新建用户登录看效果如何

    3.9K20
    领券