gpt4 book ai didi

c++ - 如何使用 QLineEdit 将 QString 添加到 QListView

转载 作者:行者123 更新时间:2023-11-30 00:38:22 25 4
gpt4 key购买 nike

我想用一个QLineEdit写一个QString,然后用一个QPushButton,我想添加一个项目(一个字符串)到一个listView

这是我得到的:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

model = new QStringListModel(this);

QStringList list;

list << "Some Item";

model->setStringList(list);

ui->listView->setModel(model);
ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
}

void MainWindow::on_pushButton_3_clicked()
{
//add
int row = model->rowCount(); // model = new QStringListModel
model->insertRow(row);

QModelIndex index = model->index(row);
ui->listView->setCurrentIndex(index);
ui->listView->edit(index); // instead of edit, I'd like to ... add a QString
}

问题是我不想编辑(这是我自己设法做到的)。我现在想改为在 CurrentIndex 处添加一个项目,并将该项目作为 lineEdit 的文本字段。我如何获得该字段的访问权限?是 lineEdit->text() 吗?以及如何将其添加到 ListView 中?

我根本不知道如何向列表中添加任何内容。我错误地找到了编辑,到目前为止谷歌没有帮助。我希望 Stack Overflow 能够而且将会。

编辑:我决定试试这个,但它似乎不是最好的解决方案

void MainWindow::on_pushButton_3_clicked()
{
//add

QStringList list;
list = model->stringList();
list.append(ui->lineEdit->text());
model->setStringList(list);
}

但这似乎是一种奇怪的做事方式。此外,由于某种原因,它似乎包含一个换行符。

最佳答案

这里已经有一个如何使用 QStringListModel 的例子:https://stackoverflow.com/a/5825113/496445

model->insertRow(model->rowCount());
QModelIndex index = model->index(model->rowCount()-1)
model->setData(index, str);

请注意,在这个建议的方法中,您不需要 QStringList,除非您出于其他原因已经有了 QStringList 并且想用它进行初始化。

当您使用 Q*View 而不是 Widget 时,您将直接为数据而不是 View 处理模型。模型更改时将通知 View 。在这种情况下,您可能会像这样访问您的 lineEdit:

QString str = ui->lineEdit->text();

关于c++ - 如何使用 QLineEdit 将 QString 添加到 QListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171123/

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