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());
}
233_QT_将QStandardItemModel、table view、QItemSelectionModel三者联系起来【已经将model与view打通,但是暂无打通model与数据】
最新推荐文章于 2024-05-23 20:08:41 发布