在 PySide6 的 QTableView 中如何居中对齐复选框,解决高分辨率显示不佳问题?-调试有术

内容

CatamountJack 2024-05-15 03:09

我最初在我从 PyQt 4.8 或 PySide 1.2.1 的时候创建的 QTableView 中使用的是复选框委托。它在 PySide2 中也可以正常工作,但当我尝试将我的应用程序更新到 PySide6 时,它不再起作用了(我现在完全不记得问题究竟出在哪了)。 PyQt5 中有一个更新的版本,位于此处:https://stackoverflow.com/a/50314085/224310,这个版本基本上起作用了,只不过委托是 QItemDelegate 的子类,而不是 QStyledItemDelegate,复选框呈现得非常大。其他人似乎也遇到了同样的问题,我发现这里:https://forum.qt.io/topic/142124/pyqt-checkbox-resolution-for-different-scales,但发帖人表示他们最终通过“通过 Qt.ItemIsUserCheckable 而不是通过委托来实现复选框”解决了他们的问题。我尝试了同样的方法,它奏效了,但通过 Qt.ItemIsUserCheckable 实现的复选框似乎无法居中显示在 QTableView 的列中。想要对其居中,你只需要...一个委托。 我已经花了许多时间研究和尝试不同的解决方案,让我感到惊讶的是,在 QTableView 的列中实现居中复选框这一看似常见的用例,在 Python 中竟然如此难以实现。(好吧,我已经使用 Qt 足够长的时间了,以至于我不会_真_的感到惊讶。) 有人对如何在 PySide6 中实现一列在列中居中且在大分辨率下看起来不那么难看的复选框有任何建议吗? (我将回答我自己的问题并在下面发布我的最终解决方案,但我也欢迎其他(更好的)建议!)

问题解答

相关问答

总结
文章讨论了在将应用程序从PyQt4.8或PySide1.2.1升级到PySide6时,QTableView中复选框委托不再起作用的问题。作者尝试了不同的解决方案,包括使用QItemDelegate的子类和Qt.ItemIsUserCheckable属性,但都存在问题。最终,通过委托实现复选框居中显示在QTableView列中的方法仍然困难。作者希望得到关于如何在PySide6中实现居中且外观良好的复选框的建议。