到目前为止,我找到的唯一解决方案是将QItemDelegate子类化,并在paint()函数中实现对齐规则,这真的是最简单的方法吗?我使用的是C++ API。
bweufnob1#
子类化QItemDelegate的替代方法是子类化您的模型并覆盖data()方法。
QItemDelegate
data()
QVariant MyModel::data(const QModelIndex& index, int role) const { if (index.column() == yourCellIndex && role == Qt::TextAlignmentRole) { return Qt::AlignLeft; } else { return QVariant(); } }
anhgbhbe2#
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);
e4eetjau3#
以下是我的作品: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;
信贷去这条评论:如何编程设置QTableView列的文本对齐方式?'item-〉设置文本对齐(Qt::对齐中心);对我很有用-Ratah
3条答案
按热度按时间bweufnob1#
子类化
QItemDelegate
的替代方法是子类化您的模型并覆盖data()
方法。anhgbhbe2#
e4eetjau3#
以下是我的作品:
http://doc.qt.io/qt-5/qstandarditem.html#setTextAlignment
其中:
信贷去这条评论:如何编程设置QTableView列的文本对齐方式?
'item-〉设置文本对齐(Qt::对齐中心);对我很有用-Ratah