Qt5.9中一组按钮QPushbutton形成互斥(有且只能选中一个)(单选按钮)

版权声明:本文为博主原创文章,欢迎各位朋友转载。转载时,保留链接地址! https://blog.csdn.net/naibozhuan3744/article/details/82146755

本文主要总结用一组按钮QPushbutton,实现有且只能选中一个按钮的功能,效果跟单选按钮一样。

要实单选按钮,只要用一个类QButtonGround就可以实现。

步骤1:调用函数QButtonGround::setExclusive(true)和QPushbutton::setCheckable(true);

步骤2:将相关的QPushbutton按钮添加进QButtonGround中,用函数QButtonGround::addButton();

步骤3:用布局管理器挂载按钮进行显示。

1.1代码如下所示:

void Widget::initMenu()
{
    const QSize btnSize(120,90);

    /*菜单按钮初始化*/
    QPushButton *sourceDiskMirrorBtn = new QPushButton(tr("\n\n\n\n\n测试按钮"));
    sourceDiskMirrorBtn->setCheckable(true);
    sourceDiskMirrorBtn->setFixedSize(btnSize);
    sourceDiskMirrorBtn->setStyleSheet("QPushButton{background-image: url(:/resource/icon/menu_sourceDiskMirror.png);background-repeat: no-repeat;background-position:center;border:none;color:rgb(255, 255, 255);}"
                                    "QPushButton:hover{background-image: url(:/resource/icon/menu_sourceDiskMirror.png);background-repeat: no-repeat;background-position:center;border:none;color:rgb(255, 255, 255);}"
                                    "QPushButton:pressed{background-image: url(:/resource/icon/menu_sourceDiskMirror.png);background-repeat: no-repeat;background-position:center;border:none;color:rgb(255, 255, 255);}");
    QPushButton *sourceDiskCopyBtn = new QPushButton();
    sourceDiskCopyBtn->setCheckable(true);
    sourceDiskCopyBtn->setFixedSize(btnSize);
    QPushButton *sourceDiskRestoreBtn = new QPushButton();
    sourceDiskRestoreBtn->setCheckable(true);
    sourceDiskRestoreBtn->setFixedSize(btnSize);
    QPushButton *reportBtn = new QPushButton();
    reportBtn->setCheckable(true);
    reportBtn->setFixedSize(btnSize);
    QPushButton *helpBtn = new QPushButton();
    helpBtn->setCheckable(true);
    helpBtn->setFixedSize(btnSize);

    /*单选菜单效果*/
    QButtonGroup *buttonGround = new QButtonGroup();
    buttonGround->addButton(sourceDiskMirrorBtn);
    buttonGround->addButton(sourceDiskCopyBtn);
    buttonGround->addButton(sourceDiskRestoreBtn);
    buttonGround->addButton(reportBtn);
    buttonGround->addButton(helpBtn);
    buttonGround->setExclusive(true);

    /*容器包含*/
    QHBoxLayout *menuLayout = new QHBoxLayout();
    menuLayout->setMargin(0);
    menuLayout->setSpacing(0);
    menuLayout->addWidget(sourceDiskMirrorBtn);
    menuLayout->addWidget(sourceDiskCopyBtn);
    menuLayout->addWidget(sourceDiskRestoreBtn);
    menuLayout->addWidget(reportBtn);
    menuLayout->addWidget(helpBtn);
    menuLayout->addStretch();

    mainLayout->addLayout(menuLayout);
}

1.2结果如下图所示:

参考内容:

https://blog.csdn.net/zsy19881226/article/details/77825533

猜你喜欢

转载自blog.csdn.net/naibozhuan3744/article/details/82146755