下面来看下程序的效果:
该程序主要实现了以下几个功能:
1.对QListWidget子项的显示进行了修改,同时显示了姓名,电话,地址,头像等.
2.在QListWidget控件的不同位置点击右键菜单,产生不同的菜单提供给用户操作.
3.在添加用户的对话框中,对电话输入框进行了输入限制.
4.用户可以自己提供图片作为头像,窗口对外来图片的操作.
“c.h”的代码:
#ifndef C_H
#define C_H
#include
#include "ui_c.h"
#include
#include
#include
#include "MyItemDrawer.h"
#include
#include "PeopleMesDialog.h"
class c : public QWidget
{
Q_OBJECT
public:
c(QWidget *parent = 0);
~c();
QListWidgetItem* c::setItemValue(QString name, QString phone, QString address, QString pixmap);
void c::insertPeoMes(QString name, QString phone, QString address, QString pixmap);
void c::addPeoMes(QString name, QString phone, QString address, QString pixmap);
private slots:
void showContextMenuSlot(const QPoint&);
void addItemSlot();
void insertItemSlot();
void delItemSlot();
private:
Ui::cClass ui;
QListWidget *m_listWidget;
QMenu *m_menu;
QAction *m_addAction;
QAction *m_delAction;
QAction *m_insertAction;
PeopleMesDialog *m_dialog;
QListWidgetItem *m_selectedItem;
int m_insertIndex;
};
#endif // C_H
“c.cpp”的代码:
#include "c.h"
c::c(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
this->setWindowTitle(QString::fromLocal8Bit("通讯录"));
this->setFixedSize(300,600);
//初始化对象.
m_dialog = new PeopleMesDialog(this);
//初始化容器和布局.
m_listWidget = new QListWidget();
QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(m_listWidget);
addPeoMes("st", "15158047646", QString::fromLocal8Bit("杭州滨江xxx号"), "");
addPeoMes(QString::fromLocal8Bit("成龙"), "15158047647", QString::fromLocal8Bit("北京xxx号"), "");
addPeoMes(QString::fromLocal8Bit("刘德华"), "15158047648", QString::fromLocal8Bit("香港xxx号"), "");
addPeoMes(QString::fromLocal8Bit("古天乐"), "15158047649", QString::fromLocal8Bit("湖南滨江xxx号"), "");
addPeoMes(QString::fromLocal8Bit("张家辉"), "15158047650", QString::fromLocal8Bit("贪玩蓝月xxx号"), "");
m_listWidget->setItemDelegate(new MyItemDrawer(m_listWidget));
m_listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
m_addAction = new QAction(QString::fromLocal8Bit("新增"), this);
m_delAction = new QAction(QString::fromLocal8Bit("删除"), th