2017-11-21 19 views
-3

をtablewidget:Qtは、私がこのようなtablewidgetを作成したエディットボックス

Tablewidget

私は、セル(0)値、(ダブルクリック)を編集したい

が、編集ボックスがあまりにも大きかったし、それがセルをカバー(1 ):私はそれの後に、細胞をカバーするエディットボックスを避けるにはどうすればよい

Tablewidget2

+0

コール '卓上> resizeColumnsToContents();' [resizeColumnsToContents](http://doc.qt.io/qt-4.8/qtableview.html#resizeColumnsToContents) – Simon

+0

Iテーブルを追加する - > resizeColumnsToContents();エディットボックスはまだ大きすぎてそれの後にセルをカバーできません。 – Stone

答えて

0

あなた自身の子供QStyledItemDelegateを作り、QStyledItemDelegate :: createEditorメソッドを再定義する必要があります。そのような

何か:

QWidget * MyStyledItemDelegate::createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const 
{ 
    QWidget * editor = QStyledItemDelegate::createEditor(parent, option, index); 
    editor->setWidth(20); // Handle editor here. 
    return editor; 
} 
+0

QTableWidget * table; table-> setItemDelegate(new MyStyledItemDelegate); – Stone

+0

別の質問、私はsetWidth(幅)が必要な場合、私はMyStyleItemDelegateに幅のパラメータを渡す必要があります。どうやってするの ?ありがとう。 – Stone

+0

よくあるC++の問題です。あなたのクラスにパラメータを渡す方法。多くの方法、多くの方法、 1)MyStyledItemDelegate()*テーブルのコンストラクタ経由で、table-> setItemDelegate(new MyStyledItemDelegate(20));コンストラクタを再定義する必要があります。 2) "セッター"機能を使用する MyStyledItemDelegate * myDelegate = new MyStyledItemDelegate; myDelegate-> setEditorWidth(20); setEditorWidth()を実装する必要があります。 – stanislav888

関連する問題