QT代理Delegates使用实例

QT代理Delegates使用实例效果如下 在表格的单元格中插入控件 用 Delegates 方式实现 源代码如下 main cpp 文件 include include include include include include datedelegate h include combodelegat h inclu

效果如下,在表格的单元格中插入控件,用Delegates方式实现

QT代理Delegates使用实例

QT代理Delegates使用实例

QT代理Delegates使用实例

源代码如下:

main.cpp文件

#include


#include


#include


#include


#include


#include “datedelegate.h”
#include “combodelegate.h”
#include “spindelegate.h”

int main(int argc,char *argv[])
{

    QApplication app(argc,argv);

    QStandardItemModel model(4,4);
    QTableView tableView;
    tableView.setModel(&model);

    DateDelegate dateDelegate;
    tableView.setItemDelegateForColumn(1,&dateDelegate);

    ComboDelegate comboDelegate;
    tableView.setItemDelegateForColumn(2,&comboDelegate);

    SpinDelegate spinDelegate;
    tableView.setItemDelegateForColumn(3,&spinDelegate);

    model.setHeaderData(0,Qt::Horizontal,QObject::tr(“Name”));
    model.setHeaderData(1,Qt::Horizontal,QObject::tr(“Birthday”));
    model.setHeaderData(2,Qt::Horizontal,QObject::tr(“Job”));
    model.setHeaderData(3,Qt::Horizontal,QObject::tr(“Income”));

    QFile file(“test.tab”);
    if(file.open(QFile::ReadOnly|QFile::Text))
    {

        QTextStream stream(&file);
        QString line;

        model.removeRows(0,model.rowCount(QModelIndex()),QModelIndex());
        int row =0;
        do{

               line = stream.readLine();
               if(!line.isEmpty())
               {

                   model.insertRows(row,1,QModelIndex());

                   QStringList pieces = line.split(“,”,QString::SkipEmptyParts);
                   model.setData(model.index(row,0,QModelIndex()),pieces.value(0));
                   model.setData(model.index(row,1,QModelIndex()),pieces.value(1));
                   model.setData(model.index(row,2,QModelIndex()),pieces.value(2));
                   model.setData(model.index(row,3,QModelIndex()),pieces.value(3));
                   row++;
               }
        }while(!line.isEmpty());

        file.close();
    }
    tableView.setWindowTitle(QObject::tr(“Delegate”));
    tableView.show();
    return app.exec();
}











































































datedelegate.h文件

datedelegate.cpp文件

combodelegate.h文件

combodelegate.cpp文件

spindelegate.h文件

spindelegate.cpp文件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202691.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午11:32
下一篇 2026年3月19日 下午11:32


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号