가장 좋은 방법은 사용자 지정 모델 (QAbstractTableModel
하위 클래스)을 정의하는 것입니다. 이 사용자 정의 클래스의 구성원으로 QSqlQueryModel
을 원할 수도 있습니다.
int rowCount(const QModelIndex &parent) const;
int columnCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role) const;
하고 모델이 필요하면 바르게 행동 모델도
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
할 수 있도록 : 그것은 읽기 전용 모델의 경우
, 당신은 적어도 이러한 방법을 구현해야 데이터를 수정/제출하려면 일들이 좀 더 복잡해 지므로 다음 방법을 구현해야합니다.
Qt::ItemFlags flags(const QModelIndex &index) const;
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole);
bool insertRows(int position, int rows, const QModelIndex &index=QModelIndex());
bool removeRows(int position, int rows, const QModelIndex &index=QModelIndex());
가
QVariant data(const QModelIndex &index, int role) const;
벙어리 예 :
QVariant MyCustomModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
int row = index.row();
int col = index.column();
switch (role)
{
case Qt::BackgroundRole:
{
if(somecondition){
// background for this row,col is blue
return QVariant(QBrush (QColor(Qt::blue)));
}
// otherwise background is white
return QVariant(QBrush (QColor(Qt::white)));
}
case Qt::DisplayRole:
{
// return actual content for row,col here, ie. text, numbers
}
case Qt::TextAlignmentRole:
{
if (1==col)
return QVariant (Qt::AlignVCenter | Qt::AlignLeft);
if (2==col)
return QVariant (Qt::AlignVCenter | Qt::AlignTrailing);
return QVariant (Qt::AlignVCenter | Qt::AlignHCenter);
}
}
}
+1 (대리인이있는 솔루션 참조). 나는 그것을 잊었다. – dschulz
"colmun"(SELECT name, status FROM users) 테이블의 각 값에 대한 색상을 설정해야합니다.이 경우 "status"이 코드를 편집 할 수 있습니까? – Tineo
optionV4-> backgroundBrush = QBrush (calculateColorForRow (index.row())); 그것은 오류를 생성합니다 – Tineo