Your example does work for me. However, the difference is that I need for column 2 to show the elides and column 4 to be hidden. What I'm doing is more:

Qt Code:
  1. #include <QtGui>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6.  
  7. model.setStringList(QStringList() << "Very very long line of text"
  8. << "Very very long line of text"
  9. << "short text"
  10. << "short text");
  11.  
  12. QTableView view;
  13. view.setModel(&model);
  14. view.horizontalHeader()->setResizeMode( 0, QHeaderView::Interactive);
  15. view.horizontalHeader()->setResizeMode( 1, QHeaderView::Stretch );
  16. view.setSectionHidden( 2, true );
  17. view.setSectionHidden( 3, true );
  18. view.show();
  19.  
  20. return a.exec();
  21. }
To copy to clipboard, switch view to plain text mode 

For me this approach (I'm using c++ not python) the table view INSISTS on wrapping the contents of the column. If I don't stretch the second column, the text is still wrapped, but the user can resize the column. However, it has a huge block of dead space. ( there is a reason that those columns are hidden. )

It's looking like my only option is to handle the elide myself, in the column's delegate.