Qt-如何在列表视图中显示文本编辑字符串?

时间:2012-09-12 08:14:51

标签: qt qtextedit qlistview qt4.8 qpushbutton

我有一个 QTextEdit,2个QPushButtons (添加n个删除按钮)和一个 QListView 。当我在文本编辑中输入文本并 单击添加按钮时,应在列表视图中添加文本。 然后,如果我选择任何一个< strong> 从列表视图中添加了文本&amp;单击“删除”按钮,应从ListView中删除文本。 我不知道如何实现此目的。 Plz帮我解决这个问题。在此先感谢。

2 个答案:

答案 0 :(得分:2)

假设您使用的是QStandardItemModel并且您有以下变量

QPushButton* addButton;
QPushButton* removeButton;
QTextEdit* textEdit;
QStandardItemModel* model;
MyObject* this;

以下代码应该这样做:

connect(addButton, SIGNAL(clicked()), this, SLOT(onAddButtonClicked()));
connect(removeButton, SIGNAL(clicked()), this, SLOT(onRemoveButtonClicked()));

然后,您定义的MyObject类中的两个插槽执行以下操作:

void MyObject::onAddButtonClicked() {
    model->appendRow(new QStandardItem(textEdit->plainText());
}

void MyObject::onRemoveButtonClicked() {
    if (model->rowCount() == 0)
        return;
    delete model->takeItem(model->rowCount() - 1);
}

更新视图由QStandardItemModel

处理

答案 1 :(得分:1)

如果您不知道如何使用模型/视图/控制器模式,我建议您使用QListWidget而不是QListView。 添加到QListWidget是简化的方法。您应创建一个插槽,用于点击添加按钮点击的信号,然后点击删除按钮的插槽。

第一个插槽的代码:

m_pListWidget->addItem( m_pTextEdit->toPlainText() );

第二个插槽的代码:

if ( QListWidgetItem* plwiCurrent = m_pListWidget->currentItem() )
{
    m_pListWidget->takeItem( m_pListWidget->row( plwiCurrent ) );
    delete plwiCurrent;
}