Кнопка удаления в Qt - PullRequest
0 голосов
/ 27 апреля 2018

Написание школьного проекта на c ++ и qt. Предполагается, что это редактор блоков (например, draw.io). Я генерирую блоки в виде кнопок и устанавливаю их в виде сетки (код ниже). Но когда я пытаюсь удалить некоторые кнопки, все окно закрывается. Что я должен сделать, чтобы удалить только одну кнопку?

void MainWindow::newBlock() {
    QPushButton *button = new QPushButton(
                tr("SUMblock%1").arg(mainGrid->count())
                );
    QMenu *buttonMenu = new QMenu(this);
    buttonMenu->addAction(editBlockAction);
    buttonMenu->addAction(deleteBlockAct);

    button->setMenu(buttonMenu);

    mainGrid->addWidget(button, posX, posY);
}

void MainWindow::createActions() {

    deleteBlockAct = new QAction(tr("Delete block"), this);
    connect(deleteBlockAct, &QAction::triggered, this, &MainWindow::deleteBlock);
}

void MainWindow::deleteBlock() {
    this->close(); //have no idea what to put here
}

1 Ответ

0 голосов
/ 27 апреля 2018

Вы изучали использование функции удаления виджета из qlayout ?

В качестве альтернативы вы можете просто скрыть кнопку, если вам не нужно полностью ее удалять.

Естественно, вам нужен указатель на кнопку, но я не знаю, как именно вы определяете, какую кнопку удалить, это может варьироваться от простого сохранения списка кнопок до поиска правой кнопки с помощью findChildren , используя лямбда-функции и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...