如何使QTableWidget中的列只读?

Nar*_*rek 61 qt qt4 qtablewidget

我想有一个列QTableWidget 不可编辑.
在论坛中,我已经阅读了很多关于某些flags但无法实现的内容.

Nar*_*rek 91

在QTableWidget中插入以下类型的项目:

QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
Run Code Online (Sandbox Code Playgroud)

工作良好!

编辑:

QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
Run Code Online (Sandbox Code Playgroud)

这是一个更好的解决方案.感谢@priomsrb.

  • 最好使用`item-> setFlags(item-> flags()^ Qt :: ItemIsEditable);`.这将使其他标志完好无损 (18认同)
  • @priomsrb 为什么按照 user2923436 的建议使用异或(XOR)而不是`item->flags() & ~Qt::ItemIsEditable`?XOR 的结果取决于标志的默认状态。 (5认同)

use*_*436 41

使用XOR的结果取决于当前状态.我建议使用

item->setFlags(item->flags() &  ~Qt::ItemIsEditable);
Run Code Online (Sandbox Code Playgroud)

无论当前设置如何,都要确保关闭编辑.

  • `~`是按位否定,应该得到所有编译器的支持. (2认同)