17
到目前爲止,我發現的唯一解決方案是繼承QItemDelegate並在paint()函數中實現我的對齊規則。這真的是最簡單的方法嗎?如何以編程方式在QTableView的列上設置文本對齊方式?
我正在使用C++ API。
到目前爲止,我發現的唯一解決方案是繼承QItemDelegate並在paint()函數中實現我的對齊規則。這真的是最簡單的方法嗎?如何以編程方式在QTableView的列上設置文本對齊方式?
我正在使用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 QAbstractTableModel::data(index, role);
}
}
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);
回報QAbstractTableModel ::數據(索引,角色)是不可能的,我認爲。因爲它是純虛擬的。你應該返回QVariant()。 http://doc.qt.io/qt-5/qabstractitemmodel.html#data – 2017-02-21 13:08:25
這個答案是在一個更簡單的時間,當草更綠,天空更清晰。請隨時編輯此答案 – Nekuromento 2017-02-21 16:27:10