C++ 如何使用QLineEdit将QString添加到QListView
我想使用QLineEdit编写一个QString,然后使用QPushButton向listView添加一个项(字符串) 以下是我得到的:C++ 如何使用QLineEdit将QString添加到QListView,c++,qt,listview,qt4,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); QStringLi
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
}
但这似乎是一种奇怪的做事方式。出于某种原因,它似乎包含了一个换行符。这里已经有一个如何使用QStringListModel的示例: 请注意,在这个建议的方法中,您不需要QStringList,除非您出于其他原因已经有了QStringList并希望用它初始化 当您使用
Q*视图而不是小部件时,您将直接为数据而不是视图处理模型。模型更改时将通知视图。在这种情况下,您可能会这样访问lineEdit:
QString str = ui->lineEdit->text();
另一种方式;右键单击listView并选择“变形为”->“QListWidget”
此时,您可以看到此函数“lst->addItem(“str”);”仅添加QListWidget,而不添加QListView
model->insertRow(model->rowCount());
QModelIndex index = model->index(model->rowCount()-1)
model->setData(index, str);
QString str = ui->lineEdit->text();