Kal*_*lec 1 c++ qt listview qt4
我想使用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
}
Run Code Online (Sandbox Code Playgroud)
问题是我不想编辑(这是我自己设法做的全部).我现在想要在CurrentIndex中添加一个项目,并将该项目作为文本字段lineEdit.如何访问该字段?是lineEdit->text()吗?以及如何将其添加到列表视图?
我根本不知道如何在列表中添加任何内容.我发现错误编辑,谷歌到目前为止没有帮助.我希望Stack Overflow能够并且愿意.
编辑:我已经决定尝试这个,但它似乎不是最好的解决方案
void MainWindow::on_pushButton_3_clicked()
{
//add
QStringList list;
list = model->stringList();
list.append(ui->lineEdit->text());
model->setStringList(list);
}
Run Code Online (Sandbox Code Playgroud)
但这似乎是一种奇怪的做事方式.由于某种原因,似乎还包括换行符.
这里有一个如何使用QStringListModel的例子:https://stackoverflow.com/a/5825113/496445
model->insertRow(model->rowCount());
QModelIndex index = model->index(model->rowCount()-1)
model->setData(index, str);
Run Code Online (Sandbox Code Playgroud)
请注意,在这种建议的方法中,您不需要QStringList,除非您已经有另一个原因,并希望使用它进行初始化.
当您使用Q*View而不是Widget时,您将直接处理模型而不是视图.模型更改时将通知视图.在这种情况下,您可能会像这样访问您的lineEdit:
QString str = ui->lineEdit->text();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30550 次 |
| 最近记录: |