をtablewidget:Qtは、私がこのようなtablewidgetを作成したエディットボックス
私は、セル(0)値、(ダブルクリック)を編集したいが、編集ボックスがあまりにも大きかったし、それがセルをカバー(1 ):私はそれの後に、細胞をカバーするエディットボックスを避けるにはどうすればよい
?
をtablewidget:Qtは、私がこのようなtablewidgetを作成したエディットボックス
私は、セル(0)値、(ダブルクリック)を編集したいが、編集ボックスがあまりにも大きかったし、それがセルをカバー(1 ):私はそれの後に、細胞をカバーするエディットボックスを避けるにはどうすればよい
?
あなた自身の子供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;
}
QTableWidget * table; table-> setItemDelegate(new MyStyledItemDelegate); – Stone
別の質問、私はsetWidth(幅)が必要な場合、私はMyStyleItemDelegateに幅のパラメータを渡す必要があります。どうやってするの ?ありがとう。 – Stone
よくあるC++の問題です。あなたのクラスにパラメータを渡す方法。多くの方法、多くの方法、 1)MyStyledItemDelegate()*テーブルのコンストラクタ経由で、table-> setItemDelegate(new MyStyledItemDelegate(20));コンストラクタを再定義する必要があります。 2) "セッター"機能を使用する MyStyledItemDelegate * myDelegate = new MyStyledItemDelegate; myDelegate-> setEditorWidth(20); setEditorWidth()を実装する必要があります。 – stanislav888
コール '卓上> resizeColumnsToContents();' [resizeColumnsToContents](http://doc.qt.io/qt-4.8/qtableview.html#resizeColumnsToContents) – Simon
Iテーブルを追加する - > resizeColumnsToContents();エディットボックスはまだ大きすぎてそれの後にセルをカバーできません。 – Stone