QListWidget 自定义显示位置

void createListView()
{
    QListWidget* plist = new QListwidget(this);
    plist->setViewMode(QListView::IConMode);
    QRect rect;
    plist->setGeometry(rect);      //设置显示位置
    plist->show();


    for(int i = 0; i < 10; i++)
    {
        QListWidgetItem* item = new QListWidgetItem;
        item->setIcon(QIcon(QPixmap("icon.jpg")));
        item->setData("name");
        list->addItem(item);
    }
    connect(list, SIGNAL(clicked(QModelIndex)), this, SLOT(listClicked(QModelIndex)));
}
void listClicked(QModelIndex)
{
    QString str = index.data().toString();
}
### 自定义 QListWidget 的外观或行为 在 PyQt 和 Qt 中,可以通过多种方式自定义 `QListWidget` 的外观和行为。以下是一些常见的方法: #### 1. 自定义样式 通过设置样式表(Style Sheet),可以轻松改变 `QListWidget` 的外观。例如,更改背景颜色、字体大小、滚动条样式等。 ```python from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem app = QApplication([]) list_widget = QListWidget() list_widget.setStyleSheet(""" QListWidget { background-color: #f0f0f0; font-size: 14px; } QListWidget::item:selected { background-color: #a0c4ff; color: white; } """) for i in range(10): item = QListWidgetItem(f"Item {i}") list_widget.addItem(item) list_widget.show() app.exec_() ``` 此外,还可以通过读取外部 `.qss` 文件来自定义样式[^4]。 #### 2. 自定义功能 ##### (1) 拖放功能 通过重写 `QListWidget` 的拖放事件,可以实现自定义的拖放行为。例如,允许从一个列表拖动项目到另一个列表,并保留原始列表中的项目[^5]。 ```python from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem from PyQt5.QtCore import Qt class CustomListWidget(QListWidget): def __init__(self, parent=None): super().__init__(parent) self.setDragDropMode(QListWidget.InternalMove) self.setDefaultDropAction(Qt.MoveAction) def dropEvent(self, event): source = event.source() if isinstance(source, CustomListWidget) and source is not self: for item in source.selectedItems(): new_item = QListWidgetItem(item.text()) self.addItem(new_item) source.takeItem(source.row(item)) source.insertItem(source.row(item), item) # Restore original item super().dropEvent(event) app = QApplication([]) list1 = CustomListWidget() list2 = CustomListWidget() for i in range(5): list1.addItem(f"Item {i}") list1.show() list2.show() app.exec_() ``` ##### (2) 鼠标事件 通过重写鼠标事件,可以实现更复杂的行为,例如拖动调整大小或捕捉鼠标位置[^2]。 ```python from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QWidget, QVBoxLayout from PyQt5.QtCore import Qt, QPoint class CustomListWidget(QListWidget): def __init__(self, parent=None): super().__init__(parent) self.setMouseTracking(True) def mouseMoveEvent(self, event): point = event.pos() print(f"Mouse Position: {point}") app = QApplication([]) widget = QWidget() layout = QVBoxLayout(widget) custom_list = CustomListWidget() for i in range(5): custom_list.addItem(f"Item {i}") layout.addWidget(custom_list) widget.show() app.exec_() ``` ##### (3) 插入自定义控件 可以将自定义的 `QWidget` 设置为 `QListWidgetItem` 的内容,从而实现更复杂的显示效果[^3]。 ```python from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QWidget, QHBoxLayout, QLabel class CustomWidget(QWidget): def __init__(self, text, parent=None): super().__init__(parent) layout = QHBoxLayout(self) label = QLabel(text) layout.addWidget(label) app = QApplication([]) list_widget = QListWidget() for i in range(5): widget = CustomWidget(f"Custom Item {i}") item = QListWidgetItem(list_widget) list_widget.setItemWidget(item, widget) list_widget.show() app.exec_() ``` ### 总结 通过结合样式表、重写事件和插入自定义控件,可以灵活地自定义 `QListWidget` 的外观和行为。以上代码示例展示了如何实现这些功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值