【发布时间】:2011-06-24 22:32:42
【问题描述】:
到目前为止,我发现的唯一解决方案是继承 QItemDelegate 并在 paint() 函数中实现我的对齐规则。真的是最简单的方法吗?
我正在使用 C++ API。
【问题讨论】:
到目前为止,我发现的唯一解决方案是继承 QItemDelegate 并在 paint() 函数中实现我的对齐规则。真的是最简单的方法吗?
我正在使用 C++ API。
【问题讨论】:
子类化QItemDelegate 的替代方法是子类化您的模型并覆盖data() 方法。
QVariant MyModel::data(const QModelIndex& index, int role) const {
if (index.column() == yourCellIndex && role == Qt::TextAlignmentRole) {
return Qt::AlignLeft;
} else {
return QVariant();
}
}
【讨论】:
QSqlTableModel *model2= new QSqlTableModel();
model2->setTable("Save");
model2->select();
QSortFilterProxyModel *proxy1=new QSortFilterProxyModel();
proxy1->setSourceModel(model2);
QStandardItemModel *modd=new QStandardItemModel();
for (int z =0; z< proxy1->rowCount(); ++z)
{
for (int y =0; y< proxy1->columnCount(); ++y)
{
QStandardItem *item= new QStandardItem();
item->setText(proxy1->index(z,y).data().toString());
item->setTextAlignment(Qt::AlignCenter);
modd->setItem(z,y,item);
}
}
ui->tableView->setModel(modd);
【讨论】:
以下作品适合我:
http://doc.qt.io/qt-5/qstandarditem.html#setTextAlignment
void MainWindow::fillTable()
{
sudukoItem->setText( "qq" );
sudukoItem->setTextAlignment(Qt::AlignCenter);
sudukoModel->appendRow( sudukoItem );
sudukoTable->setModel( sudukoModel );
sudukoTable->setRowHeight( ( sudukoModel->rowCount() - 1 ), 100 );
sudukoTable->setColumnWidth( ( sudukoModel->columnCount() - 1 ), 100 );
}
地点:
QTableView* sudukoTable;
QStandardItemModel* sudukoModel;
QModelIndex* modelIndex;
QStandardItem* sudukoItem;
归功于此评论:How to set text alignment on a column of QTableView programmatically?
`item->setTextAlignment(Qt::AlignCenter);为我工作得很好。 – 拉塔
【讨论】: