小编Ano*_*non的帖子

QListWidget 拖放通过 setItemWidget 设置的自定义小部件

我使用 QListWidget 通过使用 setItemWidget 设置自定义小部件来显示它们。像这样的东西:

QListWidget* listWidget = new QListWidget;
listWidget->setAcceptDrops(true);
listWidget->setDragDropMode(QAbstractItemView::InternalMove);
listWidget->setDragEnabled(true);
listWidget->setSelectionMode(QAbstractItemView::SingleSelection);

for ( int i = 0 ; i < 50 ; ++i )
{
    ItemWidget* item = new ItemWidget;
    QListWidgetItem* listItem = new QListWidgetItem;
    listItem->setSizeHint(item->sizeHint());
    listWidget->addItem(listItem);
    listWidget->setItemWidget(listItem, item);
}
Run Code Online (Sandbox Code Playgroud)

ItemWidget 源自 QWidget,仅在布局中显示一些自定义数据,如下所示:

ItemWidget::ItemWidget()
{
    QVBoxLayout* layout = new QVBoxLayout;
    layout->setContentsMargins(0, 0, 0, 0);
    layout->setSpacing(0);

    QHBoxLayout* contentLayout = new QHBoxLayout;
    contentLayout->setSizeConstraint(QLayout::SetFixedSize);
    contentLayout->setSpacing(0);

    contentLayout->addSpacing(5);
    contentLayout->setContentsMargins(10, 20, 10, 20);

    QLabel* iconLbl = new QLabel;
    iconLbl->setPixmap(QPixmap(":/icon.png"));
    iconLbl->setMaximumWidth(20);
    contentLayout->addWidget(iconLbl, 0, Qt::AlignTop); …
Run Code Online (Sandbox Code Playgroud)

c++ qt drag-and-drop qtablewidget qt5

3
推荐指数
1
解决办法
2256
查看次数

标签 统计

c++ ×1

drag-and-drop ×1

qt ×1

qt5 ×1

qtablewidget ×1