版权声明:本文为博主原创文章,欢迎各位朋友转载。转载时,保留链接地址! 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结果如下图所示:
参考内容: