I don't understand your question 1.
With a QList of hidden column, you don't need to know the size of the array in your model and you don't need to loop through the complete array to know which columns are hidden or not. You just need to do something like
if (!hiddenColumnList.contains(index.column())) {
// do some stuff if column is not hidden
}