Qt用QListView实现QQ列表
时间: 2023-05-24 07:05:23 浏览: 329
借助于Qt的Model/View架构和提供的一些样例代码,我们可以很方便地用QListView实现一个简单的QQ列表。
首先,我们需要创建一个QListView对象和一个QStandardItemModel对象。这个QStandardItemModel是Qt中提供的标准的Item Model,用来提供给View提供数据。
```C++
#include <QListView>
#include <QStandardItemModel>
QListView *listView = new QListView(this);
QStandardItemModel *model = new QStandardItemModel(this);
```
然后,我们可以为这个QStandardItemModel添加QQ列表中的好友信息,通过QStandardItemModel的`setItem`函数设置每个item的数据模型。
```C++
QStandardItem *item1 = new QStandardItem("Tom");
item1->setIcon(QIcon(":/images/avatar1.png"));
QStandardItem *item2 = new QStandardItem("Jack");
item2->setIcon(QIcon(":/images/avatar2.png"));
QStandardItem *item3 = new QStandardItem("Lucy");
item3->setIcon(QIcon(":/images/avatar3.png"));
model->appendRow(item1);
model->appendRow(item2);
model->appendRow(item3);
```
接着,我们将QStandardItemModel设置为QListView的model,并设置一些样式和属性。
```C++
listView->setModel(model);
listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
listView->setDragDropMode(QAbstractItemView::NoDragDrop);
listView->setSelectionMode(QAbstractItemView::SingleSelection);
listView->setSelectionBehavior(QAbstractItemView::SelectRows);
listView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
listView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
listView->setStyleSheet("border: 0; padding-left: 10px; background-color:white;");
listView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
listView->setUniformItemSizes(true);
listView->setIconSize(QSize(36, 36));
```
最后,我们将这个QListView加入到窗口中进行显示。
```C++
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(listView);
setLayout(layout);
```
完整代码如下:
```C++
#include <QListView>
#include <QStandardItemModel>
#include <QVBoxLayout>
class MainWindow : public QMainWindow
{
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
{
QListView *listView = new QListView(this);
QStandardItemModel *model = new QStandardItemModel(this);
QStandardItem *item1 = new QStandardItem("Tom");
item1->setIcon(QIcon(":/images/avatar1.png"));
QStandardItem *item2 = new QStandardItem("Jack");
item2->setIcon(QIcon(":/images/avatar2.png"));
QStandardItem *item3 = new QStandardItem("Lucy");
item3->setIcon(QIcon(":/images/avatar3.png"));
model->appendRow(item1);
model->appendRow(item2);
model->appendRow(item3);
listView->setModel(model);
listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
listView->setDragDropMode(QAbstractItemView::NoDragDrop);
listView->setSelectionMode(QAbstractItemView::SingleSelection);
listView->setSelectionBehavior(QAbstractItemView::SelectRows);
listView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
listView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
listView->setStyleSheet("border: 0; padding-left: 10px; background-color:white;");
listView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
listView->setUniformItemSizes(true);
listView->setIconSize(QSize(36, 36));
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(listView);
setLayout(layout);
}
};
```
这样就可以通过QListView实现一个QQ列表啦!
阅读全文
相关推荐















