gpt4 book ai didi

qt - QAbstractTableModel::insertRows() 的基本用法

转载 作者:行者123 更新时间:2023-12-04 18:34:42 25 4
gpt4 key购买 nike

我用通常的方式实现了 QAbstractTableModel:

class PrintIntervalTableModel : public QAbstractTableModel
{
private:
virtual int rowCount (const QModelIndex & parent = QModelIndex()) const;
virtual int columnCount (const QModelIndex & parent = QModelIndex()) const;
virtual QVariant data (const QModelIndex & index, int role = Qt::DisplayRole) const;
virtual QVariant headerData (int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
virtual bool setData (const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
virtual Qt::ItemFlags flags (const QModelIndex & index) const;

virtual bool insertRows (int position, int rows, const QModelIndex & parent = QModelIndex());
virtual bool removeRows (int position, int rows, const QModelIndex & parent = QModelIndex());

这是我的插入行,非常简单:
bool PrintIntervalTableModel::insertRows(int position, int rows, const QModelIndex & parent)
{
beginInsertRows(QModelIndex(), position, position + rows - 1);

for (int row = 0; row < rows; ++row)
{
std::deque<moment_value_pair_type>::iterator it = printIntervalPairs.begin() + position;
printIntervalPairs.insert(it, moment_value_pair_type());
}

endInsertRows();

return true;
}

现在我想知道为什么我真的这样做了? View (或其他组件)会自动调用此方法吗?

我想在表单上有一个按钮,一旦点击,就会在用户当前选择的下方插入一行。我是否基本上在表中创建一个插槽(连接到按钮 clicked())来确定插入行的位置,然后该插槽将调用 table->insertRows()?这是使用 insertRows() 覆盖的目的类型吗?

最佳答案

有点晚了,但无论如何:

Now I wonder why I actually did this? Do views (or other components) automatically call this method?



是的, insertRows()QAbstractItemModel::dropMimeData() 的默认实现调用,当来自另一个 Qt View 的项目被放到那里时被调用。

同样, removeRows()QAbstractItemView::startDrag() 的默认实现调用.

我在源代码中找不到其他用法。

关于qt - QAbstractTableModel::insertRows() 的基本用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24578969/

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