2009-08-25 21 views
9

QSqlTableModel ile bir QTableView oluşturdum. Standart olarak, hücrelerin üzerine çift tıklayarak bunları işaretleyiniz ve kullanıcı bunları düzenleyebilmektedir. İstiyorum, kullanıcının bunu yapmasına izin verilmiyor. Tek bir hücreye tıklayarak tüm satırı işaretlemesine izin verilir, ancak hücreyi düzenlemez. Bunu nasıl yapabilirim? tablo öğesinin ItemIsEditable bit kapalıQTableView - kullanıcının hücreyi düzenlemesine izin verme

table->setEditTriggers(QAbstractItemView::NoEditTriggers); 

cevap

17

her şeyi kodlama veya tasarımcı şeyler yapıyorsun bağlı olarak,

  • isteğe set selectionModeQAbstractItemView::SingleSelection için QAbstractItemView::SelectRows için QAbstractItemView::NoEditTriggers
  • selectionBehavior için

    • editTriggers set kullanıcının tam olarak bir satır seçmesini isterseniz
    • uygun çağrılar tüm Designer'daki set örneğin setEditTriggers() öneki getirilecek tableview nesne üzerinde

    bunu QAbstractItemView :: NoEditTriggers, QAbstractItemView :: SelectRows ve QAbstractItemView :: denir

  • +0

    AbstractItemView bölümünde bu seçeneği bulabilirsiniz SingleSelection, ama tam olarak aradığım şey bu. Teşekkür ederim! – Berschi

    8

    bu deneyin.

    void QAbstractItemView::setItemDelegate (QAbstractItemDelegate * delegate) 
    

    Sonra this örnekte olduğu gibi QItemDelegate devralan bir sınıf oluşturun: ör .:

    QTableWidgetItem* item = new QTableWidgetItem(...); 
    ... 
    item->setFlags(item->flags() &= ~Qt::ItemIsEditable); 
    
    2

    geçiş yapar:

    1

    İdeal kullanmak isteyeceklerdir. sınıfınızı düzenleme olması

    QWidget * QItemDelegate::createEditor (QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const 
    

    dönüş NULL

    veya kullanım:

    Ayrıca parametre ile

    void setSelectionBehavior (QAbstractItemView::SelectionBehavior behavior) 
    

    bakmak isteyecektir

    table->setEditTriggers(QAbstractItemView::NoEditTriggers); 
    

    : QAbstractItemView::SelectRows

    Başvuru için

    : http://doc.trolltech.com/4.5/qtableview.html

    İlgili konular