簡體   English   中英

如何使用 QLineEdit 將 QString 添加到 QListView

[英]How to add a QString to a QListView using a QLineEdit

我想使用 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()嗎? 以及如何將其添加到列表視圖中?

我根本不知道如何向列表中添加任何內容。 我錯誤地找到了編輯,到目前為止谷歌沒有幫助。 我希望 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 時,您將直接為數據而不是視圖處理模型。 模型更改時將通知視圖。 在這種情況下,您可能會像這樣訪問您的 lineEdit:

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

其它的辦法; 右鍵單擊 listView 並選擇“morph into” -> “QListWidget”

這時候可以看到這個函數“lst-> addItem ("str");”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM