写一个案例: qt c++ listwidgets里的item动态生成,配置每个item的字体为:font-size: 18px;color:#FFFFFF;除第一个item位置是(0,0)其他每个item都有间隔16px
时间: 2024-10-19 15:08:04 浏览: 33
在Qt C++中,我们可以使用QListWidget结合QListWidgetItem来动态创建并配置列表项。首先,你需要包括所需的头文件,并设置窗口布局。以下是一个简单的例子:
```cpp
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QListWidget>
#include <QFont>
#include <QPainter>
class CustomItem : public QListWidgetItem {
public:
CustomItem(const QString& text) : QListWidgetItem(text) {
QFont font;
font.setPixelSize(18);
setFont(font);
// 设置初始位置为 (0, 0),颜色为 #FFFFFF
setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
if (this->row() > 0) {
setPos(0, this->sizeHint().height() + 16 * (this->row() - 1));
}
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget *mainWindow = new QWidget();
QVBoxLayout *layout = new QVBoxLayout(mainWindow);
QListWidget *list = new QListWidget(mainWindow);
layout->addWidget(list);
// 动态生成5个item,第一个在顶部,其余间隔16像素
for (int i = 0; i < 5; ++i) {
CustomItem *item = new CustomItem(QString("Item %1").arg(i + 1));
list->addItem(item);
}
mainWindow->show();
return app.exec();
}
```
在这个例子中,我们创建了一个名为`CustomItem`的自定义QListWidgetItem派生类,设置了默认字体大小和白色文本颜色。在添加到QListWidget时,如果不是第一个项(行号大于0),则会根据行数计算垂直位置加上16像素的间隔。
阅读全文