qlistview 自定义控件_QT中QListView中放置自定义控件并添加滚动条

转载 http://zhouzhenren163.blog.163.com/blog/static/6549928120140605729334/

效果如下图所示:

代码如下:

untitled.pro:

#-------------------------------------------------

#

# Project created by QtCreator 2015-12-03T15:32:15

#

#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled

TEMPLATE = app

SOURCES += main.cpp\

#mainwindow.cpp \

test.cpp \

mylistwidget.cpp \

mylistview.cpp \

mywinbox.cpp

HEADERS  +=Enum.h \

test.h \

mylistwidget.h \

mylistview.h \

mywinbox.h\

#mainwindow.h \

FORMS    += mainwindow.ui

Enum.h:

#ifndef ENUM_H

#define ENUM_H

enumMyEnum

{

GRAP = 2,               //控件四周间隙,可更改;

WIDTH = 180+2*GRAP,     //+2*GRAP不能更改,只能改前面的数字,如将400改为300或500,下同;

HEIGHT = 70+2*GRAP,

COUNT = 10

};

#endif // ENUM_H

mylistview.h:

#ifndef MYLISTVIEW_H

#define MYLISTVIEW_H

#include 

#include 

#include "MyWinBox.h"

classMyListView :publicQListView

{

Q_OBJECT

public:

MyListView(QWidget *parent);

~MyListView();

publicslots:

voidReSizeSlot(introw,intcolumn);

public:

QList  GetWinBoxList();

private:

QList  m_WinBoxList;

};

#endif // MYLISTVIEW_H

mylistwidget.h:

#ifndef MYLISTWIDGET_H

#define MYLISTWIDGET_H

#include 

#include 

#include "MyListView.h"

classMyListWidget :publicQWidget

{

Q_OBJECT

public:

MyListWidget(QWidget *parent);

~MyListWidget();

public:

MyListView*  GetList();

private:<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个不错的问题,让我来简单介绍一下如何使用 Qt 实现 QQ 好友下拉列表。 首先,我们需要使用 QListView 控件来实现下拉列表,然后我们需要定义一个自定义的 Model 来提供数据。这个 Model 可以继承自 QAbstractListModel 类,然后重写一些虚函数来实现自定义 Model 的功能。 下面是一个简单的自定义 Model 的示例代码: ```cpp class FriendListModel : public QAbstractListModel { public: FriendListModel(QObject *parent = nullptr); void setFriendList(const QList<QString>& list); int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; private: QList<QString> m_friendList; }; FriendListModel::FriendListModel(QObject *parent) : QAbstractListModel(parent) { } void FriendListModel::setFriendList(const QList<QString>& list) { m_friendList = list; emit dataChanged(index(0), index(m_friendList.size()-1)); } int FriendListModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); return m_friendList.size(); } QVariant FriendListModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (index.row() >= m_friendList.size() || index.row() < 0) return QVariant(); if (role == Qt::DisplayRole) return m_friendList.at(index.row()); else return QVariant(); } ``` 在上面的代码,我们定义了一个 FriendListModel 类来提供好友列表数据。其,我们重写了 rowCount() 和 data() 函数来实现自定义 Model 的功能。rowCount() 函数返回列表的行数,data() 函数返回每个单元格的数据。 接着,我们需要在界面使用 QListView 控件,并设置上述自定义 Model 为其数据源。示例代码如下: ```cpp QListView* friendListView = new QListView(this); FriendListModel* friendListModel = new FriendListModel(this); friendListView->setModel(friendListModel); friendListModel->setFriendList({"Friend1", "Friend2", "Friend3"}); ``` 上述代码,我们使用 QListView 控件来显示好友列表,然后将 FriendListModel 设置为其数据源,并通过 setFriendList() 函数设置好友列表数据。 最后,你还可以根据需要自定义 QListView 的样式,比如设置下拉列表的最大高度、单元格的字体大小、颜色等等。 希望这些信息能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值