【发布时间】:2018-11-02 09:52:02
【问题描述】:
假设我有一个 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 fit,因为单元格太窄,用左侧的省略号(即“...”)表示,例如
"...ectory3\example.txt"
这样,如果同一目录中有很多文件,显示的文本可能会显示完整的文件名,前提是它不是太长;而不是显示大量条目,只显示路径的左侧部分,结果它们都显示相同。
我意识到我可以通过调用来了解在当前字体、间距、粗细等下将显示多大的文本字符串。然后,我可能会迭代,直到找到适合的最大字母;并在上面的代码中将其设置为尽可能多。
但是,我宁愿使用 QStyledItemDelegate 并使用 setItemDelegateForColumn(),做一些类似的事情;或使用样式表;这样基础数据将是完整且正确的路径名,但要使其显示为真正的右对齐 - 即使该列对于基础文本来说太窄。
【问题讨论】: