小编Cod*_*ker的帖子

如何创建一个 QTableWidgetItem 右对齐长文本,省略号在左边?

假设我有一个 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);
Run Code Online (Sandbox Code Playgroud)

如果该列比路径名更窄,那么我会得到类似以下内容的信息:

“C:\Directory1\Dir ...”

但是,恕我直言,如果它真正右对齐,则列显示会更有用,因为路径名的末尾部分将与单元格的右侧部分以及不适合的部分对齐,由于单元格太窄,在左侧用省略号(即“...”)表示,例如

“...ectory3\example.txt”

这样,如果同一目录中有很多文件,显示的文本可能会显示完整的文件名,前提是它不太长;而不是显示大量条目,而仅显示路径的左侧部分,结果是它们都显示相同。

我意识到我可以进行调用来找出以当前字体、间距、粗细等显示的文本字符串有多大。然后,我可能会迭代,直到找到适合的最大字母;并在上面的代码中将其设置为适合的大小。

但是,我宁愿使用 QStyledItemDelegate 并使用 setItemDelegateForColumn(),做类似的事情;或使用样式表;这样底层数据将是完整且正确的路径名,但要显示它是真正右对齐的 - 即使列对于底层文本来说太窄。

c++ qt

5
推荐指数
1
解决办法
1642
查看次数

标签 统计

c++ ×1

qt ×1