如何将不在 QT 全局范围内的函数附加到 Qwidget 上

How to attach functions to Qwidget which are not in global scope in QT

本文关键字:函数 Qwidget 范围内 全局 QT      更新时间:2023-10-16

我正在尝试在QT中制作垂直菜单(我是新手,所以请耐心等待(。 我正在尝试将 addFunction 函数从侧边栏.h 附加到 qwidget。任何帮助将不胜感激

错误

D:Projectsmainwindow.cpp:13: error: no matching function for call to 'QWidget::addAction(QIcon, QString)'
ui->widget->addAction(QIcon(QString(":/icons/icon%1").arg(i)) , QString("Action %1").arg(i));
                            ^

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "sidebar.h"
#
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
for(int i= 0; i < 6; ++i)
{
ui->widget->SideBar::addAction(QIcon(QString(":/icons/icon%1").arg(i)) , QString("Action %1").arg(i));
}
}
MainWindow::~MainWindow()
{
delete ui;
}

侧边栏.cpp

QAction *SideBar::addAction(const QString &text, const QIcon &icon)
{
QAction *action = new QAction(icon, text, this);
action->setCheckable(true);
mActions.push_back(action);
update();
return action;
}

在错误消息中,我看到尝试调用QWidget::addAction(QIcon, QString)。根据Qt文档,这种方法不存在;只有QWidget::addAction(QAction *).请尝试以下操作:

ui->widget->SideBar::addAction( new QAction( QIcon(QString(":/icons/icon%1").arg(i)) , QString("Action %1").arg(i)) );

文本和图标参数的顺序相反:

ui->widget->SideBar::addAction(QIcon(...) , QString(...).arg(i));

QAction* SideBar::addAction(const QString &text, const QIcon &icon)