用 c++ 和 qt 编写一个学校项目。它应该是一个 block 编辑器(如 draw.io)。我生成 block 作为按钮并将它们设置为网格(下面的代码)。但是当我试图删除一些按钮时,整个窗口都关闭了。只删除一个按钮怎么办?
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
}
最佳答案
您是否研究过使用 remove widget function from qlayout ?
或者,如果您不需要完全删除按钮,您可以简单地将其设为 hide。
当然,你需要有一个指向按钮的指针才能执行任何一项操作,但我不知道你是如何确定要删除哪个按钮的,这可能包括简单地保留按钮列表、通过 findChildren 搜索正确的按钮, 使用 lambda functions 等
关于c++ - Qt中的删除按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063372/