QTableWidget添加Spinbox、ComboBox,ComboBox下拉选项添加Tip提示等

本文介绍了使用Qt开发的一个Json文件编辑小工具,该工具能够读取并显示Json文件的内容到QTableWidget,支持右键增删属性行,通过QComboBox显示Json属性并提供Tip提示,同时涵盖了QListWidget、QSpinBox和QDoubleSpinBox的使用技巧。文章总结了在实现这些功能过程中遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

1 前言

  最近做了一个对Json文件进行属性键值增删、修改的小工具。这里总结一下遇到的一些较为麻烦的问题,以及踩过的一些坑,方便自己回顾。也希望能让需要的人可以少绕些弯路。工具(如下图)主要功能为:读取路径下所有Json文件,并将所有Json文件文件名显示至QListWidget,单击QlistWidget中的Json文件时显示Json文件具体数据至QtableWidget,右键增删属性行,对Json文件中的数据进行修改后进行保存。下拉框中的属性名称由Json文件读入。

2 问题总结

(1)QTableWidget指定行列添加TableWidgetItem?

ui->tableWidget->setItem(Row,Column,new QTableWidgetItem(QString itemName));//itemName为需要显示的内容

(2)判断鼠标是否在QTableWidget内,进行右键操作事件?

///右键菜单显示
void DisJsonParam::contextMenuEvent(QContextMenuEvent *event)
{
    QPoint i = ui->tableWidget->mapFromGlobal(event->globalPos());
    QRect rect(QPoint(0, 0), ui->tableWidget->size());
    if (rect.contains(i))
    {
        _tableWidgetMenu->exec(event->globalPos());
    }
 }

(3)QTableWidget右键插入行,删除行?//与(2)一同组成右键增删行功能

 QMenu *_tableWidgetMenu = nullptr;
QAction *addProperty = new QAction("add Property", this); QAction *delProperty = new QAction("
您好!您可以使用QTableWidget和QComboBox的信号与槽机制来实现它们的连接。下面是一个简单的示例代码,演示如何将QTableWidget的某一列与QComboBox进行连接: ```python from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QComboBox, QWidget, QVBoxLayout from PyQt5.QtCore import Qt class MainWindow(QWidget): def __init__(self): super().__init__() self.table_widget = QTableWidget() self.combo_box = QComboBox() layout = QVBoxLayout() layout.addWidget(self.table_widget) layout.addWidget(self.combo_box) self.setLayout(layout) self.init_table_widget() self.init_combo_box() def init_table_widget(self): self.table_widget.setColumnCount(2) self.table_widget.setRowCount(3) # 添加表格数据 self.table_widget.setItem(0, 0, QTableWidgetItem("Item 1")) self.table_widget.setItem(1, 0, QTableWidgetItem("Item 2")) self.table_widget.setItem(2, 0, QTableWidgetItem("Item 3")) def init_combo_box(self): self.combo_box.addItems(["Option 1", "Option 2", "Option 3"]) # 将表格的第二列与ComboBox进行连接 for row in range(self.table_widget.rowCount()): combo_box = QComboBox() combo_box.addItems(["Option 1", "Option 2", "Option 3"]) combo_box.currentIndexChanged.connect( lambda index, row=row: self.combo_box_changed(index, row)) self.table_widget.setCellWidget(row, 1, combo_box) def combo_box_changed(self, index, row): item_text = self.combo_box.itemText(index) self.table_widget.item(row, 0).setText(item_text) if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 在上面的示例代码中,我们创建了一个主窗口MainWindow,其中包含一个QTableWidget和一个QComboBox。在init_table_widget()函数中,我们初始化了表格数据。在init_combo_box()函数中,我们将QComboBox添加到表格的第二列,并使用currentIndexChanged信号连接到combo_box_changed槽函数。combo_box_changed槽函数会将选中的ComboBox的文本设置为表格第一列的对应单元格文本。 这样,每当选择ComboBox选项时,表格中对应行的文本也会随之更新。 希望这个例子能帮助到您!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值