3

我有一个QTextEdit 、 2 个 QPushButtons(添加 n 删除按钮)和一个QListView。当我在文本编辑中输入文本并单击添加按钮时,文本应添加到列表视图中。然后,如果我从列表视图中选择任何一个添加的文本并单击删除按钮,则应该从列表视图中删除文本。我不知道如何实现这一点。请帮我解决这个问题。提前致谢。

4

2 回答 2

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

于 2012-09-12T08:31:44.373 回答
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;
}
于 2012-09-12T08:23:38.840 回答