Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 在Qt中,是否可以将数据库单元映射到小部件的属性_Sqlite_Qt - Fatal编程技术网

Sqlite 在Qt中,是否可以将数据库单元映射到小部件的属性

Sqlite 在Qt中,是否可以将数据库单元映射到小部件的属性,sqlite,qt,Sqlite,Qt,我试图将包含数据库中文本的单元格映射到小部件的属性。我想做的是: 使用QLabel或QpushBushBushButton,其文本可由我的应用程序的用户编辑,一旦编辑,它将更新我的SQLite数据库 我试图从数据库中创建一个QSqlTableModel,然后将我选择的小部件(下面示例中的QPushButton)映射到它们 我试图从文档中了解这一点,但似乎遗漏了一些东西 这个想法是为了让小部件能够感知数据,当用户编辑完小部件后,我只需调用模型的submitAll()方法 我的数据库如下所示:

我试图将包含数据库中文本的单元格映射到小部件的属性。我想做的是:

  • 使用QLabel或QpushBushBushButton,其文本可由我的应用程序的用户编辑,一旦编辑,它将更新我的SQLite数据库
我试图从数据库中创建一个QSqlTableModel,然后将我选择的小部件(下面示例中的QPushButton)映射到它们

我试图从文档中了解这一点,但似乎遗漏了一些东西

这个想法是为了让小部件能够感知数据,当用户编辑完小部件后,我只需调用模型的submitAll()方法

我的数据库如下所示:

比如说,目标是从数据库中取名字“peter”,并将其用于QPushButton的文本

这是我的代码:

    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)

但是,我不知道如何访问我的小部件的文本属性