如何从 QTableView 获取活动/选定的 QRadioButton

Posted

技术标签:

【中文标题】如何从 QTableView 获取活动/选定的 QRadioButton【英文标题】:How to get the active/selected QRadioButton from QTableView 【发布时间】:2019-08-19 09:54:56 【问题描述】:

我想在单击按钮时从 QTableView 获取活动的 QRadioButton。但我不知道该怎么做。

假设我有一个包含

的 csv 文件 my_csv
ANIMAL; AGE
DOG; 3
CAT; 5
COW; 5

这是我的示例代码:

import pandas as pd

from PySide2.QtCore import Qt
from PySide2.QtGui import QStandardItemModel, QStandardItem
from PySide2.QtWidgets import QApplication, QTableView, QRadioButton, QPushButton

my_button = QPushButton()
model = QStandardItemModel()
view = QTableView()
view.setModel(model)

df = pd.read_csv(my_csv, sep=';')
header = list(['']) + df.columns
model.setHorizontalHeaderLabels(header)

for index in df_interface.index:
    data = list()
    item = QStandardItem()
    data.append(item)
    items = [QStandardItem("".format(field)) for field in df.iloc[index]]
    [element.setTextAlignment(Qt.AlignVCenter | Qt.AlignHCenter) for element in items]
    data.extend(items)
    model.appendRow(data)
    view.setIndexWidget(self.model.index(index, 0), QRadioButton())

【问题讨论】:

你是什么意思激活QRadioButton?你想什么时候得到它? 我想在按下 my_button 时获取选中的 QRadioButton 查看编辑后的版本 “选择的 QRadioButton”是什么意思? 【参考方案1】:

我假设“活动”是指当前选中的单选按钮(如果有)。如果是这样,解决此问题的一种方法是使用QButtonGroup,如下所示:

# create button group
radio_btns = QButtonGroup()

for index in df_interface.index:
    ...
    # add button to the button group
    button = QRadioButton()
    radio_btns.addButton(button, index)
    view.setIndexWidget(self.model.index(index, 0), button)

完成后,您可以像这样获取选中按钮的索引:

index = radio_btns.checkedId()

(但请注意,如果当前没有选中按钮,这将返回 -1)。

【讨论】:

以上是关于如何从 QTableView 获取活动/选定的 QRadioButton的主要内容,如果未能解决你的问题,请参考以下文章

如何从QTableView的选定行获取值?

如何在 QTableView 中获取选定的行

Qt C++ 从 QTableView 中获取选定行的每个单元格的数据

如何从地图活动中获取选定的位置并将其传递给父活动?

从 QTableView 中的选定行访问 QAbstractTableModel 中的原始索引

如何从recyclerview适配器获取选定项目的数量?