По поводу 1-го точно не знаю.
А по поводу 2-го, связать файл с итемом можно разными способами. Всё зависит от того, зачем это нужно. Так как это делаете Вы, тоже можно. Только нужно учитывать то, что используется QSortFilterProxyModel. Индекс, который передается в clicked(const QModelIndex &) - это индекс прокси модели. Чтобы получить нужный вам индекс в модели данных, используйте функцию QSortFilterProxyModel::mapToSource.
Вот так:
C++ (Qt)
void Mail::clicked(const QModelIndex &index)
{
QSortFilterProxyModel *modelProxy = (QSortFilterProxyModel *)(model());
QModelIndex indexSource = modelProxy->mapToSource(index);
QDir dir = QDir(qApp->applicationDirPath());
QStandardItem *item = model->itemFromIndex(indexSource);
QString filename = modelSource->data(modelSource->index(indexSource.row(), 3)).toString();
//...
}