c++ - Qt中的删除按钮

标签 c++ qt user-interface

用 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/

相关文章:

c++ - 从模板函数返回的特征矩阵改变值

c++ - VC++ 6 链接器错误

c++ - 实现自己的 realloc

multithreading - 在 Qt 4.7 中流式传输 QImage

c++ - 如何访问 Qtitan View 的滚动条?

java - 动态添加列到 JTable

iphone - 如何在 NavigationController 工具栏中(如邮件应用程序)放置进度条?

c++ - 如何禁止函数指针参数为空值

c++ - 如何从 Qt Charts 调整 LineChart 示例?

python - 如何仅提取图像的圆形 ROI 部分并通过在 Python OpenCV GUI 的 Tkinter 窗口中单击按钮来显示圆的半径