首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QButtonGroup setExclusive()发行

QButtonGroup setExclusive()发行
EN

Stack Overflow用户
提问于 2014-11-18 22:27:21
回答 2查看 890关注 0票数 1

我正在尝试将几个QPushButton`s合并到QButtonGroup中,进行独占检查,但在启动后,我仍然能够检查多个按钮。

代码语言:javascript
复制
// 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);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-18 22:55:42

我尝试过复制您的示例,对我来说,效果很好:

宽.h:

代码语言:javascript
复制
#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

widget.cpp:

代码语言:javascript
复制
#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

看看我的例子,看看你做错了什么,也许回来给你一个反馈。

票数 2
EN

Stack Overflow用户

发布于 2014-11-18 22:58:37

抱歉伙计们。该上床睡觉了。我忘了在QButtonGroup文件中声明.h,它是在本地函数中声明的,所以只是内存泄漏。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27005346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档