MySqlTableModel继承QSqlTableModel类。重载bool eventFilter(QObject *object, QEvent *event);函数。
重写:
bool MySqlTableModel::eventFilter(QObject *object, QEvent *event)
{
if(event->type() ==QEvent::KeyRelease)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
QMessageBox::information(NULL,tr("title"),tr("Can you tell me?"));
}
return QSqlTableModel::eventFilter(object, event);
}
创建:
model = new MySqlTableModel(this);
model->setTable("ServerType");
model->installEventFilter(this);
model->select(); //选取整个表的所有行
ui->tableView->setModel(model);
在我点击表修改某一个数据时。为什么不进重写的eventFilter中。
------解决方案--------------------
QSqlTableModel只提供数据,不负责和界面交互,这种方法肯定不行。
你需要理解Qt的模型视图结构才行。界面相关的由QTableView来处理