Dlistview DViewItemActionsetwidget 用法
Dlistview DViewItemAction::setwidget 用法
DListView 如何设置widget
DListView中没有主要的方法添加widget,但是在DViewItemAction中可以通过setWidget添加,进而通过Action的方式添加进DListView中
但是添加是时候需要注意一些细节
主要就是需要添加的widget的父类问题,需要将父类设置为DListView中的DListView::viewport()返回的widget,否则会出现滚动区域widget坐标不正确的问题
以下为main函数中演示的小案例
DMainWindow w;
DWidget *widget = new DWidget(&w);
QHBoxLayout *layout = new QHBoxLayout(widget);
DListView *listview = new DListView(widget);
layout->addWidget(listview);
QStandardItemModel *model = new QStandardItemModel(widget);
listview->setModel(model);
for (uint i = 0; i < 5; ++i) {
DStandardItem *standardItem1 = new DStandardItem;
DViewItemAction *itemAction = new DViewItemAction(Qt::AlignRight, QSize(36, 36), QSize(80, 80), true);
QWidget *iconButtonList = new QWidget(listview->viewport());
QHBoxLayout *iconButtonLayout = new QHBoxLayout(iconButtonList);
iconButtonLayout->addWidget(new DIconButton(QStyle::StandardPixmap(QStyle::SP_TitleBarMenuButton + i)));
iconButtonLayout->addWidget(new DIconButton(QStyle::StandardPixmap(QStyle::SP_TitleBarMenuButton + i * 4 + 1)));
iconButtonLayout->addWidget(new DIconButton(QStyle::StandardPixmap(QStyle::SP_TitleBarMenuButton + i * 4 + 2)));
iconButtonLayout->addWidget(new DIconButton(QStyle::StandardPixmap(QStyle::SP_TitleBarMenuButton + i * 4 + 3)));
iconButtonLayout->addWidget(new DIconButton(QStyle::StandardPixmap(QStyle::SP_TitleBarMenuButton + i * 4 + 4)));
itemAction->setWidget(iconButtonList);
standardItem1->setActionList(Qt::Edge::RightEdge, {itemAction});
model->appendRow(standardItem1);
}
w.setCentralWidget(widget);
w.show();
帮助编辑此页 (opens new window)
上次更新: 12/17/2020, 2:23:36 AM