我在這裏工作,目前我困在以下問題上。 它是關於一個QTableView有一個名爲「Description」的列,該列的單元格包含一個QPlainTextEditDelegate。每次輸入時,我都無法設置QPlainTextEdit的高度。現在,它的行爲就像一個QLineEdit,直到我拖動QTableView的那一行(當時我處於活動狀態)較大。在QTableView中設置QPlainTextEdit委託的高度
我想要做的是改變QPlainTextEdit的高度,一旦我進入它。 你有什麼建議?我如何着手完成這件事?
謝謝大家提前!
順便說一句對不起,我的英文不好:/
編輯:
好,我解決了這個問題,但沒有sizeHint,我用updateEditorGeometry:
void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem & option, const QModelIndex & index) const;
而且這種方法裏面,你可以設置你想要的寬度或高度
editor->setGeometry(option.rect.x(),option.rect.y(),<your_width>,<your_height>);
但是,無論如何,謝謝你!
感謝您的回答 我在我的Delegate子類中實現了sizeHint方法,但它永遠不會被調用。同時我正在尋找原因,並在Qt-Interest Archive中找到了一條消息。該人聲稱,他的工作後,他補充說: 'tableView.verticalHeader() - > resizeSections(QHeaderView :: Custom); tableView.horizontalHeader() - > resizeSections(QHeaderView :: Custom);' 但這並沒有解決問題。然後,我發現另一個建議,說禁用stretchLastSection,但也沒有奏效。你提到要發射sizeHintChanged(),我應該在哪裏放置它? – Stradivari
大小提示被稱爲獨立於編輯器的存在 - 如果您的編輯器比DisplayRole大,您應該發出sizeHintChanged創建您的給定項目的編輯器(所以在createEditor和setEditorData中,如果size是數據相關的),所以qt知道它應該現在預留更多空間。奇怪的是,你的sizeHint沒有被調用 - 確保你有絕對相同的方法聲明 - 有時候缺少const或者某些東西導致方法被視爲不同的方法並且(有意)不被視爲虛擬覆蓋 - 因此它不會被調用。 –