如何在QT中将函数附加到Qwidget中,这些函数不在全局范围内

时间:2018-06-03 09:45:17

标签: c++ qt

我试图在QT中制作一个垂直菜单(我是新手,所以请耐心等待)。 我试图将sidebar.h中的addFunction函数附加到qwidget。任何帮助将不胜感激

错误

D:\Projects\mainwindow.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));
                                                                                                  ^

mainwindow.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;
}

sidebar.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;
}

2 个答案:

答案 0 :(得分:0)

在错误消息中,我看到尝试调用QWidget::addAction(QIcon, QString)。根据Qt文档,这种方法并没有超越;只有1个}}。请尝试以下内容:

QWidget::addAction(QAction *)

答案 1 :(得分:0)

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

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

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