2017-07-28 6 views
-1

QSqlTableModel dataChanged

connect(sale,SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)),this,SLOT(calculateSALE(QModelIndex))); 

機能calculateSALE(QModelIndex)、QModelIndexによって指さ特定の列の上にいくつかのことを計算します。完璧に動作しますが、問題はありません。

テーブルのすべての列を再計算するためにfor()ループでcalculateSALE(QModelIndex)を直接呼び出したい場合があります。私はダミーのQModelIndexを作成する方法として困惑しています。ここで、列番号をループすることができます。

void calculateSALE(QModelIndex colPosition); 

どこか、プログラム内から:私は何をしたいか

は、この関数を呼び出すことです。 これは私がをやりたいのPSUDOコードです:

ここ
QModelIndex a; 
a.column=3; 
calculateSALE(a): 
+0

はい、saleというQSqlTableModelです。 – Dan3460

答えて

0

私は自分の質問に答えます。このソリューションはシンプルで、関数を呼び出すための「仮の」QModelIndexを作成することとは関係ありません。

connect(sale,SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)),this,SLOT(calculateSALE(QModelIndex))) 

この機能はQModelIndexに含まれる特定の列の計算の束をしていました。問題は、特定の機会にすべての列を一度に更新するためにこの関数を繰り返したいと思ったことです。解決策は、コード内のどこからでも呼び出すことができる関数にすべてのコードを移動することで、void updateColumn(int x)と言うことができます。その後、私はスロット上の関数をQModelIndexから取得し、この新しい関数を呼び出しました。

関連する問題