将QML TableView行映射到激活的QModelIndex

时间:2016-05-10 18:43:51

标签: qt qml tableview qmodelindex

我有一个QML TableView,我从实现QAbstractItemModel的模型中显示一些数据。但是我没有直接使用它,而是将它包装在QSortFilterProxyModel中,用于排序和过滤功能。

现在,如果我,例如有一个严重过滤的视图,并激活我想用激活的模型项做某事的行。但onActivated处理程序只给我我点击的行号,但我认为我需要QModelIndex来查询该项的基础模型。我也无法实现类似于model.get(row)的东西,因为模型现在已经将行映射到索引。

1 个答案:

答案 0 :(得分:0)

我弄清楚它应该如何运作。您可以在自定义sortfilterproxymodel中实现索引和数据,如下所示:

property var qt_UserRole: 256 // FIXME: Qt.UserRole is not exported
model.data(model.index(row, 0), qt_UserRole + 1)

现在你可以打电话给在QML中像这样。

library(shiny)
library(rhandsontable)

ui=fluidPage(
  rHandsontableOutput('table'),
  verbatimTextOutput('selected'),
    verbatimTextOutput("tr")
)
server=function(input,output,session)({

a<-c(1,2)
b<-c(3,4)
c<-rbind(df1,df2)
df1<-data.frame(df3)

#need reactive function around the following

  output$table=renderRHandsontable(
    rhandsontable(df1,selectCallback = TRUE,readOnly = FALSE)
  )
  output$selected=renderPrint({
    cat('Selected Row:',input$table_select$select$r)
    cat('\nSelected Column:',input$table_select$select$c)
    cat('\nSelected Cell Value:',input$table_select$data[[input$table_select$select$r]][[input$table_select$select$c]])
    df1[input$table_select$select$r,input$table_select$select$c]<-input$table_select$data[[input$table_select$select$r]][[input$table_select$select$c]]
  })
 #need reactive function around the following
  output$tr <- renderText({
df1[1,1]
})

})
# end server
shinyApp(ui = ui, server = server)