c++ 如何编程设置QTableView列的文本对齐方式?

n3h0vuf2  于 2023-01-15  发布在  其他
关注(0)|答案(3)|浏览(304)

到目前为止,我找到的唯一解决方案是将QItemDelegate子类化,并在paint()函数中实现对齐规则,这真的是最简单的方法吗?
我使用的是C++ API。

bweufnob

bweufnob1#

子类化QItemDelegate的替代方法是子类化您的模型并覆盖data()方法。

QVariant MyModel::data(const QModelIndex& index, int role) const {
    if (index.column() == yourCellIndex && role == Qt::TextAlignmentRole) {
        return Qt::AlignLeft;
    } else {
        return QVariant();
    }
}
anhgbhbe

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);
e4eetjau

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

相关问题