2011-02-10 6 views
17

अब तक का एकमात्र समाधान QItemDelegate को उपclass करना है और पेंट() फ़ंक्शन में मेरे संरेखण नियम को लागू करना है। क्या यह वास्तव में सबसे आसान तरीका है?QTableView के कॉलम पर टेक्स्ट संरेखण को प्रोग्रामेटिक रूप से कैसे सेट करें?

मैं सी ++ एपीआई का उपयोग कर रहा हूं।

उत्तर

26

QItemDelegate उपclussing के विकल्प अपने मॉडल को उपclass और 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); 
    } 
} 
+0

वापसी QAbstractTableModel :: डेटा (सूचकांक, भूमिका) संभव नहीं है मुझे लगता है। क्योंकि यह शुद्ध आभासी है। आपको QVariant() वापस करना चाहिए। http://doc.qt.io/qt-5/qabstractitemmodel.html#data –

+0

यह उत्तर एक सरल समय में दिया गया था, जब घास हिरण था और आकाश स्पष्ट था। कृपया इस उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें – Nekuromento

0
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); 
+6

कृपया अपना कोड न केवल डंप करें, अपनी सोच की ट्रेन को समझाएं। धन्यवाद। – Cthulhu