像是我們平時用微信一樣,自己發出的消息右對齊,其他左對齊是默認就不管了。
1 回答

LEATH
TA貢獻1936條經驗 獲得超7個贊
自定義一個Item
新建一個QWidget對象
在QWidget內添加Layout
在Layout內添加要的控件
為QWidget設置Layout
新建一個QListWidgetItem并調整大小
為QListWidgetItem設置QWidget
創建布局
首先我們創建一個最基本的布局, 只有一個listWidget和一個pushButton
實現點擊button后在listWidget中添加數據
class Windows(QMainWindow, Ui_MainWindow): def __init__(self): super(Windows, self).__init__() self.setupUi(self) self.pushButton.clicked.connect(self.deal) def deal(self): # 準備實現的功能 pass app = QtWidgets.QApplication(sys.argv) windows = Windows() windows.show() sys.exit(app.exec_()) |
可以看出此布局總體是一個橫向布局(QHBoxLayout), 再其右邊是一個縱向(QVBoxLayout), 下面的布局又是一個橫向布局(QHBoxLayout)
def get_item(): # 總Widget wight = QWidget() # 布局 layout_main = QHBoxLayout() # 總體橫向布局 layout_right = QVBoxLayout() # 右邊的縱向布局 layout_right_down = QHBoxLayout() # 右下的橫向布局 layout_right.addLayout(layout_right_down) # 右下布局填充到右邊布局中 layout_main.addLayout(layout_right) # 右邊布局填充入總布局 wight.setLayout(layout_main) # 為Widget設置總布局 |
{ "ship_name": "胡德", "ship_country": "E國", "ship_star": "5", "ship_index": "1", "ship_photo": "1.png", "ship_type": "戰巡"} |
def get_item_wight(data): # 讀取屬性 ship_name = data['ship_name'] ship_photo = data['ship_photo'] ship_index = data['ship_index'] ship_type = data['ship_type'] ship_country = data['ship_country'] ship_star = data['ship_star'] # 總Widget wight = QWidget() # 總體橫向布局 layout_main = QHBoxLayout() map_l = QLabel() # 頭像顯示 map_l.setFixedSize(40, 25) maps = QPixmap(ship_photo).scaled(40, 25) map_l.setPixmap(maps) # 右邊的縱向布局 layout_right = QVBoxLayout() # 右下的的橫向布局 layout_right_down = QHBoxLayout() # 右下的橫向布局 layout_right_down.addWidget(QLabel(ship_type)) layout_right_down.addWidget(QLabel(ship_country)) layout_right_down.addWidget(QLabel(str(ship_star) + "星")) layout_right_down.addWidget(QLabel(ship_index)) # 按照從左到右, 從上到下布局添加 layout_main.addWidget(map_l) # 最左邊的頭像 layout_right.addWidget(QLabel(ship_name)) # 右邊的縱向布局 layout_right.addLayout(layout_right_down) # 右下角橫向布局 layout_main.addLayout(layout_right) # 右邊的布局 wight.setLayout(layout_main) # 布局給wight return wight # 返回wight |
設置QListWidgetItem for ship_data in YOUR_DATA: item = QListWidgetItem() # 創建QListWidgetItem對象 item.setSizeHint(QSize(200, 50)) # 設置QListWidgetItem大小 widget = get_item_wight(ship_data) # 調用上面的函數獲取對應 self.listWidget.addItem(item) # 添加item self.listWidget.setItemWidget(item, widget) # 為item設置widget |
添加回答
舉報
0/150
提交
取消