随笔 - 70, 文章 - 0, 评论 - 9, 引用 - 0
数据加载中……

QTableWidget, QItemDelegate, QPushButton, QSignalMapper 删除处理

问题:QTableWidget,最后一列为删除按钮,点击时删除当前行。

1  设置自定义的唯一标记
        QTableWidgetItem *item6 = new QTableWidgetItem();
        item6
->setData(Qt::UserRole + 2, yieldCurveList.at(i)->getCode());

2  在代理构造中设置QSignalMapper信号信号
    signalMapper = new QSignalMapper(this);
    connect(signalMapper, SIGNAL(mapped(QString)), 
this, SIGNAL(editorRowSignal(QString)));

在代理的createEidtor中设置按钮和信号
    QPushButton *editor = new QPushButton(tr("删除"), parent);
    connect(editor, SIGNAL(clicked()), signalMapper, SLOT(map()));
    signalMapper
->setMapping(editor, index.data(Qt::UserRole + 2).toString());
    
return editor;

3  删除处理
    for (int i = 0; i < ui->tbwCurveList->rowCount(); i++)
    
{
        
if (ui->tbwCurveList->item(i, HDelete)->data(Qt::UserRole + 2== row)
            ui
->tbwCurveList->removeRow(i);
    }


4  待优化:将其设置为model,通过index在model中删除,submitAll。



其他相关资料
http://digikam.sourcearchive.com/lines/2:0.10.0-2ubuntu1/setupcollectionview_8cpp-source.html

http://www.qtforum.org/article/24195/qpushbutton-as-delegate-in-a-qtableview.html

http://kunalmaemo.blogspot.com/2010/12/creating-custom-qitemdelegate-with.html

posted on 2011-03-10 11:26 seahouse 阅读(2881) 评论(0)  编辑 收藏 引用 所属分类: Qt


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理