首页 新闻 会员 周边 捐助

qt槽函数重载遇到no matching function for call

0
[待解决问题]

//
enum Page{MYFILE, SHARE, TRANKING, TRANSFER, SWITCHUSR};
public slots:
// 按钮处理函数
void slotButtonClick(Page cur);
void slotButtonClick(QString text);

private:
QSignalMapper* m_mapper; // 声明指向 QSignalMapper 的指针,用于处理信号映射
QToolButton* m_curBtn; // 声明当前选中的按钮指针
QMap<QString, QToolButton*> m_btns; // 声明一个按钮集合,存储按钮文本与对应按钮的映射关系
QMap<Page, QString> m_pages; // 声明一个页面映射,存储页面枚举与对应文本的映射关系

btngroup::btngroup(QWidget *parent)
QWidget(parent)
, ui(new Ui::btngroup)
{
// 实例化信号映射器,并设置其父对象为当前类
m_mapper = new QSignalMapper(this);
// 初始化当前选中的按钮为“我的文件”按钮,并设置其样式为红色
m_curBtn = ui->myfile;
m_curBtn->setStyleSheet("color:red");
// 将每个按钮的显示文本作为键,对应的按钮指针作为值插入到按钮集合中
m_btns.insert(ui->myfile->text(), ui->myfile);
m_btns.insert(ui->sharelist->text(), ui->sharelist);
m_btns.insert(ui->download->text(), ui->download);
m_btns.insert(ui->transform->text(), ui->transform);
m_btns.insert(ui->switchuser->text(), ui->switchuser);

// 将页面枚举值与对应的按钮文本插入到页面映射中
m_pages.insert(Page::MYFILE, ui->myfile->text());
m_pages.insert(Page::SHARE, ui->sharelist->text());
m_pages.insert(Page::TRANKING, ui->download->text());
m_pages.insert(Page::TRANSFER, ui->transform->text());
m_pages.insert(Page::SWITCHUSR, ui->switchuser->text());

QMap<QString, QToolButton*>::iterator it = m_btns.begin();
for(;it != m_btns.end();it++)
{
    //
    m_mapper->setMapping(it.value(), it.value()->text());
    //
    connect(it.value(),&QToolButton::clicked,[=]()
    {
        m_mapper->map(it.value());
    });
}

connect(m_mapper,static_cast<void(QSignalMapper::*)(const QString &text)>(&QSignalMapper::mapped),this,&btngroup::slotButtonClick);//这一行出的问题,不知道该怎么该,ai说去掉静态转换,去掉以后ai又说加上静态转换

}

void btngroup::slotButtonClick(Page cur)
{
QString text = m_pages[cur];
slotButtonClick(text);
}
void btngroup::slotButtonClick(QString text);

QT
文姬的九命猫的主页 文姬的九命猫 | 菜鸟二级 | 园豆:230
提问于:2024-12-15 21:13

代码块的最后一行的connect,我也不知道为啥只识别那一块的代码块

文姬的九命猫 6天前
< >
分享
所有回答(2)
0

首先建议 QOverload<const QString&>::of(&QSignalMapper::mapped),这样美观。

第二个,你槽函数参数不适配,应为 void btngroup::slotButtonClick(const QString& text);

QString 和 const QString& 不是一个类型。

寂静的羽夏 | 园豆:2133 (老鸟四级) | 2024-12-16 10:30
0

除了楼上说的,另外,第二个参数是不是也要选一个. QOverload<const QString&>::of(&btngroup::slotButtonClick)

www378660084 | 园豆:1252 (小虾三级) | 2024-12-16 10:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册