QTableView - 不允许用户编辑单元格

发布于 2024-08-02 15:33:35 字数 126 浏览 7 评论 0原文

我使用 QSqlTableModel 创建了 QTableView。 按照标准,双击单元格将对其进行标记,并且用户可以对其进行编辑。 我希望用户不允许这样做。他可以通过单击单个单元格来标记整行,但不能编辑该单元格。 我怎样才能做到这一点?

I created a QTableView with a QSqlTableModel.
By standard, double-clicking on the cells will mark them and the user can edit them.
I want, that the user isn't allowed to do that. He is allowed to mark the whole row by clicking on a single cell, but not to edit the cell.
How can I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我做我的改变 2024-08-09 15:33:35

根据您是对所有内容进行编码还是在设计器中进行操作,将

  • editTriggers 设置为 QAbstractItemView::NoEditTriggers
  • selectionBehaviorQAbstractItemView:: SelectRows
  • 可以选择将 selectionMode 设置为 QAbstractItemView::SingleSelection 如果您希望用户

在 tableview 对象上仅选择一行,则相应的调用都将带有 前缀code>set 例如设计器中的setEditTriggers(),您可以在AbstractItemView部分找到这些选项

Depending on whether you are coding everything or doing things in the designer, set

  • editTriggers to QAbstractItemView::NoEditTriggers
  • selectionBehavior to QAbstractItemView::SelectRows
  • optionally set selectionMode to QAbstractItemView::SingleSelection if you want the user to select exactly one row

on the tableview object the appropriate calls will all be prefixed with set e.g setEditTriggers() in the Designer you can find these option in the AbstractItemView section

∝单色的世界 2024-08-09 15:33:35

试试这个:

table->setEditTriggers(QAbstractItemView::NoEditTriggers);

Try this:

table->setEditTriggers(QAbstractItemView::NoEditTriggers);
清风不识月 2024-08-09 15:33:35

关闭表格项目的 ItemIsEditable 位。例如:

QTableWidgetItem* item = new QTableWidgetItem(...);
...
item->setFlags(item->flags() &= ~Qt::ItemIsEditable);

Toggle off the table item's ItemIsEditable bit. e.g.:

QTableWidgetItem* item = new QTableWidgetItem(...);
...
item->setFlags(item->flags() &= ~Qt::ItemIsEditable);
饮湿 2024-08-09 15:33:35

理想情况下,您需要使用:

void QAbstractItemView::setItemDelegate ( QAbstractItemDelegate * delegate )

然后创建一个继承自 QItemDelegate 的类,如 这个示例。
编辑您的类以

QWidget * QItemDelegate::createEditor ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) const  

返回 NULL

或使用:

table->setEditTriggers(QAbstractItemView::NoEditTriggers);

您还需要查看

void setSelectionBehavior ( QAbstractItemView::SelectionBehavior behavior )

使用参数:QAbstractItemView::SelectRows

供参考:
http://doc.trolltech.com/4.5/qtableview.html

Ideally you will want to use:

void QAbstractItemView::setItemDelegate ( QAbstractItemDelegate * delegate )

And then create a class that inherits from QItemDelegate like in this example.
Editing your class to have

QWidget * QItemDelegate::createEditor ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) const  

return NULL

or use:

table->setEditTriggers(QAbstractItemView::NoEditTriggers);

You will also want to look at

void setSelectionBehavior ( QAbstractItemView::SelectionBehavior behavior )

With the parameter: QAbstractItemView::SelectRows

For reference:
http://doc.trolltech.com/4.5/qtableview.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文