簡體   English   中英

QButtonGroup setExclusive()問題

[英]QButtonGroup setExclusive() issue

我試圖通過排他檢查將一些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

widget.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

查看我的示例,看看您在做什么錯,並可能會反饋。

對不起大家。 它該睡覺了。 我忘了在.h文件中聲明QButtonGroup,它是在本地函數中聲明的,所以只是內存泄漏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM