16

ServicesTableModelから継承するクラス ( ) がありQSqlRelationalTableModelます。コンストラクターには次のものがあります。

ServicesTableModel::ServicesTableModel( QWidget* parent, QSqlDatabase db )
: QSqlRelationalTableModel( parent, db )
{ 
    setTable( "servicios" );
    select();
    ...
}

今、私が行を配置すると

qDebug() << primaryKey();

ドットはどこにありますか

QSqlRecord( 1 ) 
" 0:" QSqlField("ser_id", int, required: no, generated: yes)

これは完全に理にかなっていますが、その後

qDebug() << primaryKey().name();

答えは

""

そのため、主キーの名前に到達できません。

テーブルは sqlite であり、で定義されています

CREATE TABLE servicios (ser_id integer primary key, ... )

これは、テーブル内の行に密接に関連するオブジェクトのクラスを一般化しようとしており、コンストラクターに主キー名を提供する必要がないように思われるため、重要です。

私は何か間違ったことをしているに違いないか、name()_メソッド fromが何をするのか理解していませんQSqlField

4

1 に答える 1

1

primaryKey.name()インデックスの名前を返します。

SQL では、インデックスに名前を付けることができます。これは、キーに使用されるフィールドの名前とは無関係です。

インデックスは複数のフィールドで機能します。key.fieldName(i)各フィールド名は、で取得できます0<i<key.count()

于 2015-04-08T19:23:03.367 に答える