package DirModel; use strict; use warnings; use QtCore4; use QtGui4; use QtCore4::isa qw( Qt::DirModel ); # With a Qt::DirModel, set on a view, you will see 'Program Files' in the view # But with this model, you will see 'C:\Program Files' in the view. # We acheive this, by having the data() return the entire file path for # the display role. Note that the Qt::EditRole over which the Qt::Completer # looks for matches is left unchanged # [0] sub NEW { my ( $class, $parent ) = @_; $class->SUPER::NEW( $parent ); } # [0] # [1] sub data { my ($index, $role) = @_; if ($role == Qt::DisplayRole() && $index->column() == 0) { my $path = Qt::Dir::toNativeSeparators(this->filePath($index)); if ( substr( $path, -1 ) eq chr( Qt::Dir::separator()->toAscii() ) ) { chop $path; } return Qt::Variant(Qt::String($path)); } return this->SUPER::data($index, $role); } # [1] 1;