c++ - QButtonGroup setExclusive() 问题

标签 c++ qt qt5.3

我正在尝试通过独占检查将一些 QPushButton 分组到 QButtonGroup 中,但在启动后我仍然能够检查多个按钮。

// pen toggle button
penB.setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
penB.setIconSize(QSize(ICON_SIZE,ICON_SIZE));
penB.setCheckable(true);
penB.toggle();
penB.setIcon(QIcon(":icons/pen.png"));
// circle toggle button
circleB.setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
circleB.setIconSize(QSize(ICON_SIZE,ICON_SIZE));
circleB.setCheckable(true);
circleB.setIcon(QIcon(":icons/circle.png"));

figureBox.addButton(&penB);
figureBox.addButton(&circleB);
figureBox.setExclusive(true);
// add buttons to grid
layoutG.addWidget(&openB,1,1);
layoutG.addWidget(&saveB,1,2);
layoutG.addWidget(&penB,1,3);
layoutG.addWidget(&circleB,2,3);

我认为,它只是需要处理一些事件。如果是真的,具体是哪些事件? 提前致谢。

最佳答案

我已经尝试复制您的示例并且对我来说它工作正常:

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QButtonGroup>
#include <QGridLayout>

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    QGridLayout layoutG;
    QButtonGroup figureBox;
    QPushButton openB;
    QPushButton saveB;
    QPushButton penB;
    QPushButton circleB;
};

#endif // WIDGET_H

小部件.cpp:

#include "widget.h"


Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
    // pen toggle button
    penB.setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    penB.setIconSize(QSize(16, 16));
    penB.setCheckable(true);
    penB.toggle();

    // circle toggle button
    circleB.setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    circleB.setIconSize(QSize(16, 16));
    circleB.setCheckable(true);

    figureBox.addButton(&penB);
    figureBox.addButton(&circleB);
    figureBox.setExclusive(true);

    // add buttons to grid
    layoutG.addWidget(&openB,1,1);
    layoutG.addWidget(&saveB,1,2);
    layoutG.addWidget(&penB,1,3);
    layoutG.addWidget(&circleB,2,3);

    setLayout(&layoutG);
}

Widget::~Widget()
{
}

您的代码中唯一可能有问题的地方是我看不到您在哪里设置布局,但也许您出于简单原因没有添加代码。另一件事是,唯一排除的按钮是 penBcircleB

检查我的示例,看看您做错了什么,也许会回来提供反馈。

关于c++ - QButtonGroup setExclusive() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005346/

相关文章:

c++ - 如何实现经纬度值的邻近搜索?

c++ - 将 cURL 库加载到 Qt5 后出现错误

qt - QMessageBox 的翻译在 Qt5.3 中不起作用

c++ - Qt 文件对话框在重新启动项目后不记得最后一个目录

c++ - Qt 接口(interface)或抽象类和 qobject_cast()

c++ - 标记 Qt 小部件

android - 当使用 Qt 5.3 或 Qt 5.4(但不是 Qt 5.2)编译时,QGuiApplication 在手机被锁定时停止事件循环

c++ - dlmopen 和 C++ 库

c++ - 将一个方面应用于所有流输出,使用自定义字符串操纵器

c++ - dlib-19.1:从图像(例如 dlib::cv_image)初始化 dlib::matrix 以进行 DNN 训练