私はに関連付けられたQSqlTableModel
を使用しています。QtableViewのQtでカスタムQProxyを使用して列をマージする方法は?
QTableView
の同じ列にfirstName
とsecondName
を表示する必要があります。 私はまた別に、これらのフィールドで検索を行う必要があり、それが問題だ:私はちょうど私のSQLクエリでCONCAT(lastName, ' ', secondName)
を使用することはできません、私は、現在、いくつかのデータ構造で別々に
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName("...")
db.setDatabaseName("...")
db.setUserName("...")
db.setPassword("...")
db.open()
model.setQuery(u"""SELECT
CONCAT(c.firstName, ' ', c.lastName, ' ', c.patrName),
CONCAT(c.birthDate, '/', TIMESTAMPDIFF(YEAR, c.birthDate, NOW())),
IF(c.sex = 1, 'M', 'F'),
CONCAT(p.serial, '-', p.number),
CONCAT(d.serial, '-', d.number)
FROM client AS c
JOIN clientpolicy AS p ON c.id = p.client_id
JOIN clientdocument AS d ON c.id = d.client_id""", db)
self.ui.patientsTableView.setModel(model)
をfirstName
とsecondName
を維持する必要があります例えば、私はCであなたのテーブルモデルに
typedef struct sUserFullName
{
QString oFistName;
QString oLastName;
}USER_FULLNAME;
Q_DECLARE_METATYPE(USER_FULLNAME);
class MyCusumeModel : public QSqlTableModel
{
Q_OBJECT
private:
QList<USER_FULLNAME> m_oAllUsersNames;
const QString& GetFirstName(int row) const
{
return m_oAllUsersNames.at(row).oFistName;
}
const QString& GetLastName(int row) const
{
return m_oAllUsersNames.at(row).oLastName;
}
public:
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
};
ハンドル列データを、独自のデータ構造を作成secondName
あなたはいくつかのコードを提供することはできますか?構造体をデータ構造体として使用できます。または[QPair](http://doc.qt.io/qt-5/qpair.html) – Simon