如何在 QTableView 中直接访问 QWidget?

How can I get direct access to a QWidget in a QTableView?

我知道您可以将 QWidget(如 QLineEdit)插入到表格视图中。

例如:

QSortFilterProxyModel *m = new QSortFilterProxyModel(this);
ui -> tblView -> setIndexWidget(m -> index(0, 0), new QLineEdit); // works fine

//another option
QLineEdit *le = new QLineEdit;
ui -> TblDataLeagues -> setIndexWidget(m -> index(i, 0), le); //also works; advantage is, you can setup the QLineEdit before you add it into the tableview

现在,在索引 0、0 处的单元格或更好的单元格中,您有一个 QLineEdit。 我怎样才能直接处理小部件? 以我可以使用 QLineEdit 功能的方式。 还是可以直接从单元格中读出值?

像这样:

ui -> tblView -> indexWidget(m -> index(0, 0) ) -> text(); //no member named `text` in `QWidget`

您可能希望从此 QLineEdit 中读出当前或修改后的文本。

如文档所述,此函数 returns 通常是一个 QWidget 以适应 table 中的任何子类型。因此,如果您确定此索引处的类型,则需要使用泛型 qobject_cast<Target> 对检索到的对象应用强制转换。