과 연결된 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
당신이 몇 가지 코드를 제공 할 수 있습니까? 데이터 구조체로 struct를 사용할 수 있습니다. 또는 [QPair] (http://doc.qt.io/qt-5/qpair.html) – Simon