首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

(2)使用预定义模型 QStringListModel例子

2012-09-02 
(二)使用预定义模型 QStringListModel例子??teamleadersdialog.h?#include QtGui#include teamleadersd

(二)使用预定义模型 QStringListModel例子

?

?

teamleadersdialog.h

?

#include <QtGui>#include "teamleadersdialog.h"TeamLeadersDialog::TeamLeadersDialog(const QStringList &leaders,                                     QWidget *parent)    : QDialog(parent){    //创建并组装一个QStringListModel    model = new QStringListModel(this);    model->setStringList(leaders);    //创建一个QListView    listView = new QListView;    //设置模型    listView->setModel(model);    //设置QListView编辑触发器:通过开始输入或者双击进入编辑字符串的状态    listView->setEditTriggers(QAbstractItemView::AnyKeyPressed                              | QAbstractItemView::DoubleClicked);    //    buttonBox = new QDialogButtonBox();    QPushButton *insertButton = buttonBox->addButton(tr("&Insert"),            QDialogButtonBox::ActionRole);    QPushButton *deleteButton = buttonBox->addButton(tr("&Delete"),            QDialogButtonBox::ActionRole);    buttonBox->addButton(QDialogButtonBox::Ok);    buttonBox->addButton(QDialogButtonBox::Cancel);    //信号槽绑定插入、删除按钮    connect(insertButton, SIGNAL(clicked()), this, SLOT(insert()));    connect(deleteButton, SIGNAL(clicked()), this, SLOT(del()));    //按钮盒的ok和Cancel事件    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));    //界面竖直布局listView和buttonBox    QVBoxLayout *mainLayout = new QVBoxLayout;    mainLayout->addWidget(listView);    mainLayout->addWidget(buttonBox);    //设置当前窗口的布局为mainLayout    setLayout(mainLayout);    setWindowTitle(tr("Team Leaders"));}//获取当前模型中的内容QStringList TeamLeadersDialog::leaders() const{    return model->stringList();}void TeamLeadersDialog::insert(){    //从列表视图得到当前项的行数    int row = listView->currentIndex().row();    //在模型中插入一个新行,并且模型会自动更新列表视图    model->insertRows(row, 1);    //获取当前行在模型中的"模型索引"    QModelIndex index = model->index(row);    //设置刚刚插入的空白行为列表视图的当前索引    listView->setCurrentIndex(index);    //设置列表视图在当前行进入编辑状态    listView->edit(index);}void TeamLeadersDialog::del(){    //从目前行开始,共删除1行model数据,并自动更新列表视图    model->removeRows(listView->currentIndex().row(), 1);}

?

热点排行