gpt4 book ai didi

c++ - QtableView 将整行设置为只读

转载 作者:行者123 更新时间:2023-11-28 05:18:28 24 4
gpt4 key购买 nike

我在将 QTableView 的整行设置为只读时遇到问题。当我使用 setEnabled 方法时,它只会使第一列只读。这是一个示例,我正在向表中添加一个新行并尝试将整行设置为只读:

void CItemsMenu::addSlave(const quint8 addr, const QString& uniqId, const QString& userString)
{
// create new item
QStandardItem* item = new QStandardItem(m_columnLabels.size()); // size is 3

// make item readonly
item->setEditable(false); // this makes only the 1st column readonly

// append new item
mp_itemsModel->appendRow(item);
int row = mp_itemsModel->rowCount() - 1;

// slave address
mp_itemsModel->setData(mp_itemsModel->index(
row, (int)itemsTableCol::slaveAddr, QModelIndex()), addr, Qt::EditRole);

// unique ID
mp_itemsModel->setData(mp_itemsModel->index(
row, (int)itemsTableCol::uniqId, QModelIndex()), uniqId, Qt::EditRole);

// user string
mp_itemsModel->setData(mp_itemsModel->index(
row, (int)itemsTableCol::userStr, QModelIndex()), userString, Qt::EditRole);
}

我将不胜感激。

编辑:解决方案:

QList<QStandardItem*> itemsList;
for (int i = 0; i < m_columnLabels.size(); i++)
{
itemsList.append(new QStandardItem(1));
itemsList.last()->setEditable(false);
}

最佳答案

每个单元格需要一个项目。

当你打电话时:

mp_itemsModel->appendRow(item);

您只需为第一列设置项目。引用 Qt 文档:

When building a list or a tree that has only one column, this function provides a convenient way to append a single new item.

在处理 QTableView 时,您应该调用 appendRow() 的重载这需要 QList<QStandardItem *> .像这样:

QList<QStandardItem *> list;
... // Fill list and set all items in the list to be read-only.
mp_itemsModel->appendRow(list);

关于c++ - QtableView 将整行设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42051989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com