Şimdiye kadar bulduğum tek çözüm QItemDelegate'in alt sınıfını çizmek ve benim alignment kuralımı paint() işlevinde uygulamak. Gerçekten en basit yol mu?QTableView sütununda metin hizalaması nasıl programlanır?
C++ API'sini kullanıyorum.
Şimdiye kadar bulduğum tek çözüm QItemDelegate'in alt sınıfını çizmek ve benim alignment kuralımı paint() işlevinde uygulamak. Gerçekten en basit yol mu?QTableView sütununda metin hizalaması nasıl programlanır?
C++ API'sini kullanıyorum.
QItemDelegate
ürününü alt kümeye ekleme alternatifi, modelinizi alt sınıflara ayırmak ve data()
yöntemini geçersiz kılmaktır.
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);
Lütfen sadece kodunuzu dökmeyin, düşünce treninizi açıklayın. Teşekkürler. – Cthulhu
dönüş QAbstractTableModel :: verileri (indeks, rol) mümkün değildir diye düşünüyorum. Çünkü bu saf sanal. QVariant() öğesini döndürmelisiniz. http://doc.qt.io/qt-5/qabstractitemmodel.html#data –
Bu cevap daha yeşil bir sürede ve gökyüzü daha net olduğunda daha basit bir zamanda verildi. Lütfen bu cevabı düzenlemek için çekinmeyin. – Nekuromento