Предположим, у меня есть QTableWidget. Затем я создаю для него предметы
QString pathname="C:\\Directory1\\Directory2\\Directory3\\example.txt";
QTableWidgetItem*item=new QTableWidgetItem(pathname);
item->setTextAlignment(Qt::AlignVCenter | Qt::AlignRight);
ui->myTable->setItem(row, 1, item);
Если столбец является более узким, чем путь, то я получаю что-то вроде:
"C: \ Directory1 \ Dir ..."
Однако отображение столбца было бы гораздо более полезным, ИМХО, если бы оно было действительно выровнено по правому краю, поскольку конечная часть имени пути должна была быть выровнена с правой частью ячейки, а часть, которая не ' t, потому что ячейка была слишком узкой, была представлена многоточием (то есть "...") слева, например
"... ectory3 \ example.txt"
Таким образом, если в одном каталоге было много файлов, отображаемый текст может отображать полное имя файла, при условии, что оно не будет слишком длинным; вместо отображения большого количества записей с отображением только левой части пути, в результате все они отображаются одинаково.
Я понимаю, что мог бы позвонить, чтобы узнать, какая большая текстовая строка будет отображаться с текущим шрифтом, высотой, весом и т. Д. Затем я мог бы выполнять итерацию до тех пор, пока не найду максимально подходящие буквы; и установите его в приведенном выше коде только столько, сколько нужно.
Однако я бы предпочел использовать QStyledItemDelegate и использовать setItemDelegateForColumn (), сделать что-то подобное; или используйте таблицу стилей; таким образом, что базовые данные будут полным и правильным путем, но для его отображения он будет по-настоящему правильным, даже если столбец слишком узок для основного текста.