请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我使用的是QT6版本,发现在我的版本上,你14-5写的代码已经出不了效果了,在QT新版本上应该改写成如下代码才行

#include “toolbarwidget.h”
#include “ui_toolbarwidget.h”

#include
#include
#include

ToolBarWidget::ToolBarWidget(QWidget parent) :
QWidget(parent),
ui(new Ui::ToolBarWidget)
{
ui->setupUi(this);
// QSignalMapper
mapper = new QSignalMapper(this);
// QList<QPushButton*> buttonList = findChildren<QPushButton*>();
// for(auto btn: buttonList){
//(尤其是Qt6)中,QSignalMapper 类已被弃用并移除。
//这种写法在QT6上面已经被废弃了
// connect(btn, SIGNAL(clicked()), mapper, SLOT(map()));

//     mapper->setMapping(btn, btn->text());
// }
// connect(mapper, SIGNAL(mapped(QString)), this, SIGNAL(buttonClicked(QString)));


QList<QPushButton*> buttonList = findChildren<QPushButton*>();
for(auto btn : buttonList) {
    // 使用Lambda直接捕获按钮文本
    connect(btn, &QPushButton::clicked, this, [this, btn]() {
        emit buttonClicked(btn->text());
    });
}

}

ToolBarWidget::~ToolBarWidget()
{
delete ui;
}

正在回答

1回答

好的,你用的是哪个版本,我使用6.7.2暂时还没有移除,并且还支持Qt4的连接写法

0 回复 有任何疑惑可以回复我~
  • 非常感谢! Based on Qt 6.8.1 (MSVC 2022, x86_64) 这是我使用的QT版本
    回复 有任何疑惑可以回复我~ 2025-04-29 00:28:57
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号