233_QT_将QStandardItemModel、table view、QItemSelectionModel三者联系起来【已经将model与view打通,但是暂无打通model与数据】

65 篇文章 6 订阅
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    /*
     * tableView通过QStandardItemModel把所有的数据显示在自己上面
     * QStandardItemModel在tableView上做整体的二维布局
     * QStandardItem是QStandardItemModel二维布局中具体的某一项,存储实际数据
     * QItemSelectionModel可以获取、选择或设置某一项数据的位置或状态,但是是通过QStandardItemModel作为桥梁来获取QStandardItem的
     *
     * 已经将model与view打通,但是暂无打通model与数据
    */
    LabCurFile = new QLabel(QString::fromLocal8Bit("当前文件"),this);  //当前文件
    LabCellPos= new QLabel(QString::fromLocal8Bit("当前单元格"),this);   //当前单元格行列号
    LabCellText= new QLabel(QString::fromLocal8Bit("当前内容"),this);  //当前单元格内容

    theModel = new QStandardItemModel(10, FixedColoumCount, this);//数据模型  10x6
    theSelection = new QItemSelectionModel(theModel);//Item选择模型

    /*
     * 加载“桥梁”到tableView上
    */
    ui->tableView->setModel(theModel);
    ui->tableView->setSelectionModel(theSelection);

    LabCurFile->setMinimumWidth(200);/*底部条上,标签所占宽度*/
    LabCellPos->setMinimumWidth(150);
    ui->statusbar->addWidget(LabCurFile);
    ui->statusbar->addWidget(LabCellPos);
    ui->statusbar->addWidget(LabCellText);

    connect(theSelection, &QItemSelectionModel::currentChanged, this, &MainWindow::on_currentChanged);

}

void MainWindow::on_currentChanged(const QModelIndex & current, const QModelIndex& previous)
{
    if(!current.isValid())
        return;

    char buf[128] = {};
    memset(buf, 0, sizeof(buf));
    sprintf(buf, "当前单元格:%d行  %d列", current.row(), current.column());
    LabCellPos->setText(QString::fromLocal8Bit(buf));

    QStandardItem * item = theModel->itemFromIndex(current);
    LabCellText->setText(QString::fromLocal8Bit("单元内容:")+item->text());
    QFont font = item->font();
    ui->actFontBold->setChecked(font.bold());

}

图示:QQ学习群1168520757

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扳手的海角

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值