2024-05-20 13:36:43 发布
网友
我有一个QTableWidget,其中应该添加聊天消息(普通的qlabel)。在
我在这个表中只有一列,而对齐方式取决于发送者(me=左,him=右)
我知道我可以使用以下方法将小部件添加到QTableWidget中:
myTable.setCellWidget(row,0,myQLabel)
这会将标签添加到默认对齐方式中。现在,我不知道如何使每一行的对齐是动态的。在
我看到一些答案做了这样的事情,但项目不是小部件,只是文本。在
如何使添加的QWidget进入不同的对齐方式
您必须建立到QLabel的对齐方式:
from PyQt5 import QtCore, QtGui, QtWidgets class Widget(QtWidgets.QWidget): def __init__(self, parent=None): super(Widget, self).__init__(parent) self.m_table = QtWidgets.QTableWidget(0, 1) self.m_table.verticalHeader().hide() self.m_table.horizontalHeader().setSectionResizeMode( QtWidgets.QHeaderView.Stretch ) self.m_lineedit = QtWidgets.QLineEdit() self.left_button = QtWidgets.QPushButton( "Left", clicked=self.on_left_clicked ) self.right_button = QtWidgets.QPushButton( "Right", clicked=self.on_right_clicked ) lay = QtWidgets.QGridLayout(self) lay.addWidget(self.m_table, 0, 0, 1, 2) lay.addWidget(self.m_lineedit, 1, 0, 1, 2) lay.addWidget(self.left_button, 2, 0) lay.addWidget(self.right_button, 2, 1) @QtCore.pyqtSlot() def on_left_clicked(self): self.add_label(self.m_lineedit.text(), QtCore.Qt.AlignLeft) self.m_lineedit.clear() self.m_table.scrollToBottom() @QtCore.pyqtSlot() def on_right_clicked(self): self.add_label(self.m_lineedit.text(), QtCore.Qt.AlignRight) self.m_lineedit.clear() self.m_table.scrollToBottom() def add_label(self, text, alignment): label = QtWidgets.QLabel(text, alignment=alignment) row = self.m_table.rowCount() self.m_table.insertRow(row) self.m_table.setCellWidget(row, 0, label) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) w = Widget() w.show() sys.exit(app.exec_())
更新:
另一个解决方案是创建一个QWidget,其中QLabel被放置在QLabel中,从而建立与QWidget相关的QLabel的对齐。在
您必须建立到QLabel的对齐方式:
更新:
另一个解决方案是创建一个QWidget,其中QLabel被放置在QLabel中,从而建立与QWidget相关的QLabel的对齐。在
^{pr2}$相关问题 更多 >
编程相关推荐