2012-11-28 21 views
1

我有一個簡單的QStandardItem和QTableView和QStyledItemDelegate。他們有代表,我想禁用用戶更改表中列的內容的可能性,並且只允許選擇和複製。我想它與QStyledItemDelegate::createEditor有關。QStyledItemDelegate和QStandardItem防止更改文本,只啓用選擇和複製

當我設置它返回0,它只是禁用一切。

QWidget *InfoTableItemDelegate::createEditor(QWidget *parent, 
            const QStyleOptionViewItem &option, 
            const QModelIndex &index) const 
{ 
    // return QStyledItemDelegate::createEditor(parent, option, index); 
    return 0; 
} 

我的問題是,我該怎麼定義它,所以我只能選擇和複製,並禁用選項來編輯它像刪除或更改文本

+0

1)別忘了寫下你的問題...... 2)什麼是「禁用一切」? 3)在這裏返回0應該沒問題,它不會創建編輯器小部件,因此您無法編輯模型。 – Synxis

+0

謝謝,我希望能夠選擇和複製文本,但不能編輯它(刪除或更改)當我這樣做與返回0,我不能選擇和複製它 – user63898

回答

1

如果您的數據可以顯示簡單的文本,那麼你可以返回一個QLineEdit read-only mode。如果您有圖像或其他類型的數據,可能是一個帶有一些html的可選QLabel(爲了使QLabel可選,您必須在label's interaction flags中包含Qt::TextSelectableByMouseQt::TextSelectableByKeyboard)。

+0

1 /這不是一個非常有建設性的評論。 2 /爲什麼你認爲這不是一個好辦法? 3 /你不能直接選擇,它不會在Qt中實現。另一種方法是編寫一個跟蹤鼠標並相應地繪製小部件的委託,這是我認爲的更多工作。 – Synxis

+0

抱歉的評論。但我想現在如果我使用委託的表我可以做它與設置標誌 – user63898