Как удалить динамически созданный LineEdit?

150
19 апреля 2018, 11:47

Я хочу иметь возможность удалить добавленный LineEdit.

Сам код динамических LineEdit:

qdynamiclineedit.h

#ifndef QDYNAMICLINEEDIT_H
#define QDYNAMICLINEEDIT_H
#include <QLineEdit>
#include <QObject>
#include <QWidget>
class QDynamicLineEdit : public QLineEdit
{
    Q_OBJECT
public:
    explicit QDynamicLineEdit(QWidget *parent = 0);
    ~QDynamicLineEdit();
    int getID();
    static int ResID;
private:
    int LineEditID = 0;
};
#endif // QDYNAMICLINEEDIT_H

qdynamiclineedit.cpp

#include "qdynamiclineedit.h"    
QDynamicLineEdit::QDynamicLineEdit(QWidget *parent):
    QLineEdit(parent)
{
    ResID++;
    LineEditID = ResID;
    //QDynamicLineEdit::installEventFilter(parent);
}   
QDynamicLineEdit::~QDynamicLineEdit() { 
}   
int QDynamicLineEdit::getID() {
    return LineEditID;
}   
int QDynamicLineEdit::ResID = 0;

Сам код формы и добавления поля в журнал:

addlog.h

#ifndef ADDLOG_H
#define ADDLOG_H
#include <QDialog>
#include "qdynamiclineedit.h"
namespace Ui {
class AddLog;
}
class AddLog : public QDialog
{
    Q_OBJECT
public:
    explicit AddLog(QWidget *parent = 0);
    ~AddLog();
private slots:
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();
    void on_lineEdit_returnPressed();
    bool eventFilter(QObject *watched, QEvent *event);
    void SetNumberLineEdit();
private:
    Ui::AddLog *ui;
    QDynamicLineEdit* FieldLineEdit;
};
#endif // ADDLOG_H

addlog.cpp

#include "addlog.h"
#include "ui_addlog.h"
#include <QDebug>
AddLog::AddLog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::AddLog)
{
    ui->setupUi(this);
    ui->lineEdit->setText("введите_название_журнала");
}
AddLog::~AddLog()
{
    delete ui;
}
void AddLog::on_pushButton_2_clicked()
{
    FieldLineEdit = new QDynamicLineEdit(this);
    FieldLineEdit->setText(QString("введите_название_поля_%1").arg(FieldLineEdit->getID()));
    ui->verticalLayout_2->addWidget(FieldLineEdit);
    //FieldLineEdit->installEventFilter(this);
    //connect(FieldLineEdit, SIGNAL(), this, SLOT(SetNumberLineEdit()));
}
bool AddLog::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == FieldLineEdit) {
        if(event->type() == QEvent::MouseButtonPress) {
             ui->lineEdit_2->setText(QString("%1").arg(FieldLineEdit->getID()));
        }
    }
    //return AddLog::eventFilter(watched, event);
}
void AddLog::SetNumberLineEdit() {
    ui->lineEdit_2->setText(QString("%1").arg(FieldLineEdit->getID()));
}
void AddLog::on_pushButton_3_clicked()
{
}
void AddLog::on_lineEdit_returnPressed()
{
    qDebug()<<"1";
}

Определение события клика на LineEdit, которое я попробовал сделать. Просто скрывает все LineEdite, кроме последнего добавленного:

... 
QDynamicLineEdit::installEventFilter(parent);
...
bool AddLog::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == FieldLineEdit) {
        if(event->type() == QEvent::MouseButtonPress) {
             ui->lineEdit_2->setText(QString("%1").arg(FieldLineEdit->getID()));
        }
    }
    //return AddLog::eventFilter(watched, event);
}

READ ALSO
Ошибка при компиляции *.sass через Gulp

Ошибка при компиляции *.sass через Gulp

Для проекта нужно сделать компиляцию *sass файлов через gulp

145
Серверный рендеринг React + Django

Серверный рендеринг React + Django

Доброго времени суток, пишу SPA, используя Реакт и Джанго, подружил которые друг с другом с помощью webpack-django-loader и Django REST Framework - Джанго передает...

215
this в addEventListener

this в addEventListener

Как правильно через addEventListener передать this, в функцию deleteFile?

160
Методы объекта ES5

Методы объекта ES5

Можно ли обратиться к методу объекта изнутри через binding identifier, как во второй функции?

120