Try to make self-explanatory interfaces that hide the implementation details. That makes it easier to exchange components later. E.g., we should not deal with QModelIndex here, these are implementation details of FileNavigator and FileExplorer respectively.
Create self-explaining signals instead, e.g.:
  void pathSelected(const QString &path);
  void fileSelected(const QString &path);
and connect them to the approriate functions (setRootPath(), loadFile()).
Thats much easier to use and understand and allows for the selection-widgets to be replaced later without having to care how they are implemented.