qt creator 在原结构体基础上新增和删除项目,通过单击主窗口“新增”按钮弹出子窗口进行数据填入,单击“删除”按钮对项目进行删除,展示完整示例代码
时间: 2024-02-24 21:55:20 浏览: 234
好的,下面是一个示例代码,用于在 Qt Creator 中实现在原结构体基础上新增和删除项目,并且通过单击主窗口“新增”按钮弹出子窗口进行数据填入,单击“删除”按钮对项目进行删除。
首先,我们需要在 Qt Creator 中创建一个新的窗口应用程序项目。然后,我们需要在主窗口中添加一个 QListWidget 控件,用于显示结构体项目列表,以及一个 QPushButton 控件,用于触发添加新项目的操作。在 QPushButton 的单击事件中,我们需要打开一个新的 QDialog 窗口,该窗口包含用于填写新项目数据的控件。当用户单击“确定”按钮时,我们需要将新项目添加到 QListWidget 控件中。
在主窗口中添加 QListWidget 和 QPushButton 控件的代码如下:
```
#include <QtWidgets>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void onAddButtonClicked();
void onDeleteButtonClicked();
private:
QListWidget *m_listWidget;
QPushButton *m_addButton;
QPushButton *m_deleteButton;
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
m_listWidget = new QListWidget(this);
m_addButton = new QPushButton("Add", this);
m_deleteButton = new QPushButton("Delete", this);
connect(m_addButton, &QPushButton::clicked, this, &MainWindow::onAddButtonClicked);
connect(m_deleteButton, &QPushButton::clicked, this, &MainWindow::onDeleteButtonClicked);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(m_listWidget);
QVBoxLayout *buttonLayout = new QVBoxLayout;
buttonLayout->addWidget(m_addButton);
buttonLayout->addWidget(m_deleteButton);
layout->addLayout(buttonLayout);
QWidget *centralWidget = new QWidget(this);
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
}
MainWindow::~MainWindow()
{
delete m_listWidget;
delete m_addButton;
delete m_deleteButton;
}
void MainWindow::onAddButtonClicked()
{
QDialog dialog(this);
dialog.setWindowTitle("Add New Item");
QLabel *nameLabel = new QLabel("Name:", &dialog);
QLineEdit *nameEdit = new QLineEdit(&dialog);
QLabel *valueLabel = new QLabel("Value:", &dialog);
QLineEdit *valueEdit = new QLineEdit(&dialog);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, &dialog);
connect(buttonBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
connect(buttonBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
QGridLayout *layout = new QGridLayout(&dialog);
layout->addWidget(nameLabel, 0, 0);
layout->addWidget(nameEdit, 0, 1);
layout->addWidget(valueLabel, 1, 0);
layout->addWidget(valueEdit, 1, 1);
layout->addWidget(buttonBox, 2, 0, 1, 2);
if (dialog.exec() == QDialog::Accepted) {
QString name = nameEdit->text();
QString value = valueEdit->text();
QString itemText = QString("%1: %2").arg(name).arg(value);
m_listWidget->addItem(itemText);
}
}
void MainWindow::onDeleteButtonClicked()
{
QListWidgetItem *item = m_listWidget->currentItem();
if (item) {
delete item;
}
}
```
在上面的代码中,onAddButtonClicked() 方法是 QPushButton 的单击事件处理程序。它创建一个新的 QDialog 窗口,并在该窗口中添加用于填写新项目数据的 QLabel 和 QLineEdit 控件。当用户单击“确定”按钮时,我们将获取用户输入的数据,并将其添加到 QListWidget 控件中。
onDeleteButtonClicked() 方法是删除按钮的单击事件处理程序。它查找 QListWidget 中当前选定的项目,并删除该项目。
这是一个简单的示例代码,您可以根据自己的需求进行修改和扩展。
阅读全文