【问题标题】:Qt tablewidget editboxQt tablewidget 编辑框
【发布时间】:2017-11-21 08:52:44
【问题描述】:

我创建了一个这样的表格小部件:

我想编辑单元格(0)的值,(双击),但编辑框太大,它覆盖了单元格(1):

如何避免编辑框覆盖其后的单元格?

【问题讨论】:

  • 致电table->resizeColumnsToContents();resizeColumnsToContents
  • 我添加 table->resizeColumnsToContents();但是编辑框仍然太大而无法覆盖它之后的单元格。

标签: qt editbox


【解决方案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);真的成功了!非常感谢!
  • 另一个问题,如果我想要 setWidth(width);我必须将一个宽度参数传递给 MyStyleItemDelegate 。怎么做 ?谢谢。
  • 那个常见的 C++ 问题。如何在你的类上传递参数。很多很多方法, 1) 通过 MyStyledItemDelegate() *table;table->setItemDelegate(new MyStyledItemDelegate(20)); 的构造函数;您需要重新定义构造函数。 2) 通过“setter”函数 MyStyledItemDelegate * myDelegate = new MyStyledItemDelegate; myDelegate->setEditorWidth(20);需要实现 setEditorWidth()
猜你喜欢
  • 1970-01-01
  • 2019-08-27
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多