Как прикрепить функции к Qwidget, которые не находятся в глобальной области видимости в QT - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь сделать вертикальное меню в QT (я новичок, так что терпите меня).Я пытаюсь прикрепить функцию addFunction из sidebar.h к 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;
}

боковой панели.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 голосов
/ 03 июня 2018

У вас есть параметры текста и значков в обратном порядке:

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

и

QAction* SideBar::addAction(const QString &text, const QIcon &icon)
0 голосов
/ 03 июня 2018

В сообщении об ошибке я вижу, что QWidget::addAction(QIcon, QString) пытаются вызвать.Согласно Qt docs такой метод не существует;только QWidget::addAction(QAction *).Попробуйте пожалуйста следующее:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...