【关于QListWidget自定义Item的学习】直接上代码,
QListWidget *listWidget = new QListWidget;
QWidget *widget = new QWidget;
QListWidgetItem *item = new QListWidgetItem(listWidget );
listWidget->addItem(nitem);
nitem->setSizeHint(QSize(0,50));
ui->listWidget->setItemWidget(nitem,widget);
上面的代码是实现将widget设置为listWidget的Item,
需要对item自定义的话,直接重新封装一个继承于QWidget的类就可以了,下面贴出我的相关代码,供参考:
ProjectDialog::ProjectDialog(QString path,QWidget *parent) :
QDialog(parent),
ui(new Ui::ProjectDialog)
{
ui->setupUi(this);
//获取所有的文件夹
QDir dir(path);
m_path = path;
dir.setFilter(QDir::Dirs);
foreach(QFileInfo fullDir, dir.entryInfoList())
{
if(fullDir.fileName() == "." || fullDir.fileName() == "..") continue;
QWidget *widget = createItemWidget(fileName);
QListWidgetItem *item = new QListWidgetItem(ui->listWidget);
ui->listWidget->addItem(item);
item->setSizeHint(QSize(0,50));
ui->listWidget->setItemWidget(item,widget);
}
}ProjectDialog::~ProjectDialog()
{
delete ui;
}QWidget *ProjectDialog::createItemWidget(QString projectName)
{
QFont font;
font.setPixelSize(18);
QWidget *widget = new QWidget;
widget->setMinimumHeight(40);
QHBoxLayout *layout = new QHBoxLayout(widget);
QLabel *lab_name = new QLabel(this);
lab_name->setMinimumHeight(30);
lab_name->setFont(font);
lab_name->setText(QStringLiteral("名称:"));
QLabel *lab_projectName = new QLabel(widget);
lab_projectName->setStyleSheet("border-width: 1px;
border-style: solid;
border-color: rgb(0, 0, 0);
");
lab_projectName->setText(projectName);
lab_projectName->setAlignment(Qt::AlignCenter);
lab_projectName->setMinimumSize(120,30);
lab_projectName->setFont(font);
QToolButton *btn_info = new QToolButton(widget);
btn_info->setMinimumSize(60,30);
btn_info->setText(QStringLiteral("文件详情"));
btn_info->setToolTip(QStringLiteral("文件详情"));
btn_info->setFocusProxy(this);
btn_info->setFont(font);
QToolButton *btn_selected = new QToolButton(widget);
btn_selected->setMinimumSize(60,30);
btn_selected->setText(QStringLiteral("选择"));
btn_selected->setToolTip(QStringLiteral("选择"));
btn_selected->setFont(font);
QToolButton *btn_export = new QToolButton(widget);
btn_export->setMinimumSize(60,30);
btn_export->setText(QStringLiteral("导出到U盘"));
btn_export->setToolTip(QStringLiteral("导出到U盘"));
btn_export->setFont(font);
layout->addWidget(lab_name,0,Qt::AlignCenter);
layout->addWidget(lab_projectName,0,Qt::AlignCenter);
layout->addWidget(btn_info,0,Qt::AlignCenter);
layout->addWidget(btn_selected,0,Qt::AlignCenter);
layout->addWidget(btn_export,0,Qt::AlignCenter);
widget->setLayout(layout);
return widget;
}
这里面的createItemWidget函数返回一个QWidget类指针,可以直接使用,一般最好还是封装一个Widget类比较好点,这样相对来说灵活点。
推荐阅读
- Qt|Qt常用UI控件读取、写入方法
- Qt|Qt For Android 之启动页
- QT|QT面试
- QT安装
- qt|qt for android实现app内通过按键后台运行程序
- qt|qt for android程序保活 程序后台一直运行不被清理掉(未完)
- QWidget实现手机ipad屏幕滑屏效果
- Qt|Qt官方示例-QML Axes
- 在QT/QML中使用FontAwesome做图标显示
- QT|QtCreator2.7.0桌面快捷方式创建过程