15 个解决方案
#1
似乎是使用QStyledItemDelegate这个来实现?求教如何使用?有没有例子?
#2
QListWidget::setItemWidget
#3
使用QListWidget::setItemWidget时,如何对item进行布局?现在控件加进去了,但是都重叠在一起了。
#4
先创建一个QWidget,然后对这个QWidget设置布局,然后往布局里添加你的按钮,最后把这个QWidget设置到item上
#5
这个QWidget在Item里面的位置如何调整?
#6
QWidget是一个包裹,它占据Item的所有空间
#7
,,这样那我把所有的东西,包括item的text、ICON都放入这个QWidget了?
#8
嗯哈。
QWidget *container = new QWidget;
container->addLayOut(xxxx);
container->addWidget(xxxWidget);
item->setItemWidget(containter);
//这个container完全可以用Desinger去做哈。高效快捷~
QWidget *container = new QWidget;
container->addLayOut(xxxx);
container->addWidget(xxxWidget);
item->setItemWidget(containter);
//这个container完全可以用Desinger去做哈。高效快捷~
#9
listWidget->setResizeMode(QListView::Adjust);
listWidget->setGridSize(QSize(165,176));
listWidget->setIconSize(QSize(158,117));
listWidget->setViewMode(QListView::IconMode);
listWidget->setWordWrap(true);
listWidget->setAutoScroll(true);
mItem = new QListWidgetItem(listWidget);
mLayoutWidget = new QWidget(listWidget);
mVLayout = new QVBoxLayout(mLayoutWidget);
mHLayout = new QHBoxLayout();
QLabel *showPic = new QLabel(mLayoutWidget);
QPixmap pixMap(QString(":/b_1243700182001.jpg"));
showPic->setPixmap(pixMap);
mVLayout->addWidget(showPic);
QLabel *showName = new QLabel(text,mLayoutWidget);
mVLayout->addWidget(showName);
mDeleteBt = new QPushButton(mLayoutWidget);
mDetailBt = new QPushButton(mLayoutWidget);
mUploadBt = new QPushButton(mLayoutWidget);
mHLayout->addWidget(mDeleteBt);
mHLayout->addWidget(mDetailBt);
mHLayout->addWidget(mUploadBt);
mVLayout->addLayout(mHLayout);
mLayoutWidget->setLayout(mVLayout);
mLayoutWidget->show();
listWidget->setItemWidget(mItem,mLayoutWidget);
为什么是空白?什么都没有,但是我把listWidget->setItemWidget(mItem,mLayoutWidget);改成listWidget->setItemWidget(mItem,mUploadBt);就显示出来一部分。
#10
listWidget->setIconSize(QSize(158,117));
listWidget->setViewMode(QListView::IconMode);
这两句去掉就可以显示出来了,但是只能一行显示一个,不能一行显示多个,这个问题怎么解决呢?
listWidget->setViewMode(QListView::IconMode);
这两句去掉就可以显示出来了,但是只能一行显示一个,不能一行显示多个,这个问题怎么解决呢?
#11
可能是你的布局没有调整边距所致,在你这两个布局上设置setContentsMargins(0, 0, 0, 0);
#12
#13
好吧,我把iconsize设置为1,1,可以显示了,也可以一行显示多个了,但总觉得不是很好,有没有更好的解决办法呢?
#14
这样还是有问题,,,
#15
QTableWidget * tvDecoderItemArea = new QTableWidget(this);
tvDecoderItemArea->setObjectName("tvDecoderItemArea");
tvDecoderItemArea->setColumnCount(1);
tvDecoderItemArea->horizontalHeader()->setVisible(false);
tvDecoderItemArea->verticalHeader()->setVisible(false);
tvDecoderItemArea->horizontalHeader()->setStretchLastSection(true);
int index = tvDecoderItemArea->rowCount();
tvDecoderItemArea->setRowCount(index+1);
QPushButton* pItem = new QPushButton(tr("text_%1").arg(index+1));
tvDecoderItemArea->setCellWidget(index,0,pItem);
tvDecoderItemArea->setObjectName("tvDecoderItemArea");
tvDecoderItemArea->setColumnCount(1);
tvDecoderItemArea->horizontalHeader()->setVisible(false);
tvDecoderItemArea->verticalHeader()->setVisible(false);
tvDecoderItemArea->horizontalHeader()->setStretchLastSection(true);
int index = tvDecoderItemArea->rowCount();
tvDecoderItemArea->setRowCount(index+1);
QPushButton* pItem = new QPushButton(tr("text_%1").arg(index+1));
tvDecoderItemArea->setCellWidget(index,0,pItem);
#1
似乎是使用QStyledItemDelegate这个来实现?求教如何使用?有没有例子?
#2
QListWidget::setItemWidget
#3
使用QListWidget::setItemWidget时,如何对item进行布局?现在控件加进去了,但是都重叠在一起了。
#4
先创建一个QWidget,然后对这个QWidget设置布局,然后往布局里添加你的按钮,最后把这个QWidget设置到item上
#5
这个QWidget在Item里面的位置如何调整?
#6
QWidget是一个包裹,它占据Item的所有空间
#7
,,这样那我把所有的东西,包括item的text、ICON都放入这个QWidget了?
#8
嗯哈。
QWidget *container = new QWidget;
container->addLayOut(xxxx);
container->addWidget(xxxWidget);
item->setItemWidget(containter);
//这个container完全可以用Desinger去做哈。高效快捷~
QWidget *container = new QWidget;
container->addLayOut(xxxx);
container->addWidget(xxxWidget);
item->setItemWidget(containter);
//这个container完全可以用Desinger去做哈。高效快捷~
#9
listWidget->setResizeMode(QListView::Adjust);
listWidget->setGridSize(QSize(165,176));
listWidget->setIconSize(QSize(158,117));
listWidget->setViewMode(QListView::IconMode);
listWidget->setWordWrap(true);
listWidget->setAutoScroll(true);
mItem = new QListWidgetItem(listWidget);
mLayoutWidget = new QWidget(listWidget);
mVLayout = new QVBoxLayout(mLayoutWidget);
mHLayout = new QHBoxLayout();
QLabel *showPic = new QLabel(mLayoutWidget);
QPixmap pixMap(QString(":/b_1243700182001.jpg"));
showPic->setPixmap(pixMap);
mVLayout->addWidget(showPic);
QLabel *showName = new QLabel(text,mLayoutWidget);
mVLayout->addWidget(showName);
mDeleteBt = new QPushButton(mLayoutWidget);
mDetailBt = new QPushButton(mLayoutWidget);
mUploadBt = new QPushButton(mLayoutWidget);
mHLayout->addWidget(mDeleteBt);
mHLayout->addWidget(mDetailBt);
mHLayout->addWidget(mUploadBt);
mVLayout->addLayout(mHLayout);
mLayoutWidget->setLayout(mVLayout);
mLayoutWidget->show();
listWidget->setItemWidget(mItem,mLayoutWidget);
为什么是空白?什么都没有,但是我把listWidget->setItemWidget(mItem,mLayoutWidget);改成listWidget->setItemWidget(mItem,mUploadBt);就显示出来一部分。
#10
listWidget->setIconSize(QSize(158,117));
listWidget->setViewMode(QListView::IconMode);
这两句去掉就可以显示出来了,但是只能一行显示一个,不能一行显示多个,这个问题怎么解决呢?
listWidget->setViewMode(QListView::IconMode);
这两句去掉就可以显示出来了,但是只能一行显示一个,不能一行显示多个,这个问题怎么解决呢?
#11
可能是你的布局没有调整边距所致,在你这两个布局上设置setContentsMargins(0, 0, 0, 0);
#12
#13
好吧,我把iconsize设置为1,1,可以显示了,也可以一行显示多个了,但总觉得不是很好,有没有更好的解决办法呢?
#14
这样还是有问题,,,
#15
QTableWidget * tvDecoderItemArea = new QTableWidget(this);
tvDecoderItemArea->setObjectName("tvDecoderItemArea");
tvDecoderItemArea->setColumnCount(1);
tvDecoderItemArea->horizontalHeader()->setVisible(false);
tvDecoderItemArea->verticalHeader()->setVisible(false);
tvDecoderItemArea->horizontalHeader()->setStretchLastSection(true);
int index = tvDecoderItemArea->rowCount();
tvDecoderItemArea->setRowCount(index+1);
QPushButton* pItem = new QPushButton(tr("text_%1").arg(index+1));
tvDecoderItemArea->setCellWidget(index,0,pItem);
tvDecoderItemArea->setObjectName("tvDecoderItemArea");
tvDecoderItemArea->setColumnCount(1);
tvDecoderItemArea->horizontalHeader()->setVisible(false);
tvDecoderItemArea->verticalHeader()->setVisible(false);
tvDecoderItemArea->horizontalHeader()->setStretchLastSection(true);
int index = tvDecoderItemArea->rowCount();
tvDecoderItemArea->setRowCount(index+1);
QPushButton* pItem = new QPushButton(tr("text_%1").arg(index+1));
tvDecoderItemArea->setCellWidget(index,0,pItem);