Sqlite 在Qt中,是否可以将数据库单元映射到小部件的属性
我试图将包含数据库中文本的单元格映射到小部件的属性。我想做的是:Sqlite 在Qt中,是否可以将数据库单元映射到小部件的属性,sqlite,qt,Sqlite,Qt,我试图将包含数据库中文本的单元格映射到小部件的属性。我想做的是: 使用QLabel或QpushBushBushButton,其文本可由我的应用程序的用户编辑,一旦编辑,它将更新我的SQLite数据库 我试图从数据库中创建一个QSqlTableModel,然后将我选择的小部件(下面示例中的QPushButton)映射到它们 我试图从文档中了解这一点,但似乎遗漏了一些东西 这个想法是为了让小部件能够感知数据,当用户编辑完小部件后,我只需调用模型的submitAll()方法 我的数据库如下所示:
- 使用QLabel或QpushBushBushButton,其文本可由我的应用程序的用户编辑,一旦编辑,它将更新我的SQLite数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(QDir::currentPath() + "/todo.sqlite");
if (!db.open()) {
// something
}
QSqlQuery query;
query.prepare("CREATE TABLE IF NOT EXISTS names (id INTEGER UNIQUE PRIMARY KEY, firstname VARCHAR(30), lastname VARCHAR(30))");
query.exec();
m_model = new QSqlTableModel(this, db);
m_model->setEditStrategy(QSqlTableModel::OnManualSubmit);
m_model->setTable("names");
m_model->select();
// Find the number of rows from the table
query.exec("SELECT COUNT(*) FROM names");
if(query.first())
qDebug() << query.value(0).toInt() << Qt::endl;
// do the mapping
auto btn = new QPushButton;
auto mapper = new QDataWidgetMapper(this);
mapper->setModel(m_model);
//mapper->setItemDelegate(new QSqlRelationalDelegate(this));
qDebug() << m_model->fieldIndex("firstname");
mapper->addMapping(btn, m_model->fieldIndex("firstname"));
qDebug() << btn->text();
QSqlDatabase db=QSqlDatabase::addDatabase(“QSQLITE”);
setDatabaseName(QDir::currentPath()+“/todo.sqlite”);
如果(!db.open()){
//某物
}
QSqlQuery查询;
prepare(“创建表,如果不存在名称(id整数唯一主键,firstname VARCHAR(30),lastname VARCHAR(30))”;
exec();
m_model=新的QSqlTableModel(此,db);
m_模型->setEditStrategy(QSqlTableModel::OnManualSubmit);
m_模型->可设置(“名称”);
m_模型->选择();
//从表中查找行数
query.exec(“从名称中选择计数(*));
if(query.first())
qDebug()setItemDelegate(新的QSqlRelationalDelegate(this));
qDebug()字段索引(“名字”);
映射器->添加映射(btn,m_模型->字段索引(“名字”);
qDebug()文本();
编辑
我听说过这种方法:
void QDataWidgetMapper::addMapping(QWidget*小部件,int部分,常量QByteArray和propertyName)
但是,我不知道如何访问我的小部件的文本属性