如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
How to set a new item in tabview Qt, and save the previous ones
当我使用QttableView
时,我只能在第一行设置项。当我单击add
时,它将覆盖前者,但不会设置新项目。也许我的插槽功能不正确。但我不知道该怎么处理。
void Widget::on_addButton_clicked()
{ int i = 0;
EditDialog editDialog(this);
if(editDialog.exec() == 1)
{
model->setItem(i,0,new QStandardItem(editDialog.getID()));
model->setItem(i,1,new QStandardItem(editDialog.getPriority()));
model->setItem(i,2,new QStandardItem(editDialog.getTime()));
}
i++;
}
请查看文档。QStandardItemModel::setItem()
:
将给定行和列的项设置为项。模型取得项目的所有权。如有必要,会增加行数和列数以适应项目指定位置的上一个项目(如果有(将被删除
(强调是我的。(
如果一行应插入表末尾之前(例如,作为第一行(,则有必要明确执行此操作。
这可以通过在设置项目之前调用QStandardItemModel::insertRow()
来实现。
这可能看起来像这样:
// fills a table model with sample data
void populate(QStandardItemModel &tblModel, bool prepend)
{
int row = tblModel.rowCount();
if (prepend) tblModel.insertRow(0);
for (int col = 0; col < NCols; ++col) {
QStandardItem *pItem = new QStandardItem(QString("row %0, col %1").arg(row).arg(col));
tblModel.setItem(prepend ? 0 : row, col, pItem);
}
}
这是我以前的一个职位上的。完整的示例可以在我对SO的回答中找到:当数据添加到当前位置上方时,停止QTableView滚动。
相关文章:
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 无法在 Visual Studio 中创建新项目
- C++:初始化(新)一个不同初始大小的向量数组
- 在Clion的新窗口中创建一个新项目
- 新的一个一维阵列,非常大,例如60000*60000
- CLION-创建新项目时的CMAKE错误
- 如何更改Visual Studio 2015中的默认新项目打开C 代码
- PowrProf.h的CallNtPowerInformation存在链接错误的新项目
- 是否将Visual Studio项目设置复制到新项目
- TensorFlow,Android Studio和Bazel:建立一个新项目
- CMAKE将新项目添加到解决方案中
- boost::variant 是否仍用于野外的新项目?
- Qt Creator在创建新项目时没有"Qt Gui Application"可供选择
- C 检索列表中现有或新项目的引用
- Eclipse CDT不为新项目生成符号
- NetBeans - 两个项目 - 一个找不到要包含的文件 (C++)
- 用头文件开始一个新项目
- 如何改变默认#包括在Visual Studio 2013(c++)中,当我创建一个新项目
- c++ /OpenGL -开始一个新项目
- 当我开始一个新项目时,Visual Studio 2012会忘记SDL配置