Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение к слоту из другого класса, Ошибка при компиляции 
:(
    Опции темы
Vish7
Дата 22.9.2020, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 22.9.2020

Репутация: нет
Всего: нет



Здравствуйте! 
Пытаюсь реализовать меню в отдельном классе MenuWidget::MenuWidget, не получается сделать connect..
Пожалуйста, подскажите почему при компиляции вылезает ошибка и как это исправить:
QObject::connect: No such slot QMainWindow::CopyFile() in ..\untitled6\menuwidget.cpp:23

mainwindow.h
Код

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();


private:
    Ui::MainWindow *ui;

    QPushButton* pushButton;

    QString PathCopyFile;

private slots:
 void CopyFile();
};


menuwidget.h
Код

class MenuWidget:public QMainWindow
{
     //Q_OBJECT
public:
    MenuWidget(QWidget *parent = 0);

    
    void MenuFile();

private:
    QMenu *file;
    QAction *openfile;
    QAction *copyfile;


mainwindow.cpp
Код

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

void MainWindow::CopyFile()
{
    bool result;
    QStringList files = QFileDialog::getOpenFileNames(this, tr("Open file"), "C://");
    QString filePathCopy = QFileDialog::getExistingDirectory(this, tr("Copy file"), "C://t");

    QStringList list = files;
    QStringList::iterator it = list.begin();
    while (it != list.end())
    {
        QFile file (*it);
        QFileInfo info (file);
        QString fileName = info.fileName();

        if (QFile::exists(filePathCopy+"/"+fileName))
        {
            QFile::remove(filePathCopy+"/"+fileName);
        }

        result = QFile ::copy(*it, filePathCopy+"/"+fileName);
        it++;
   }
    qDebug() << result;
}


menuwidget.cpp
Код

MenuWidget::MenuWidget(QWidget *parent)
    : QMainWindow(parent)
{
    MenuFile();
}

void MenuWidget::MenuFile()
{
    openfile = new QAction("&Open file..", this);
    copyfile = new QAction("&Copy file", this);
    file = new QMenu();
    file = menuBar() -> addMenu("&File");
    file -> addAction(copyfile);
    file ->addAction(openfile);
    connect(copyfile, SIGNAL(triggered()), this, SLOT(CopyFile()));
}


main.cpp
Код

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //MainWindow w;
   // w.show();
   MenuWidget window;

      window.resize(800, 550);
      window.setWindowTitle("Simple menu");
      window.show();
    return a.exec();
}



Это сообщение отредактировал(а) Vish7 - 22.9.2020, 22:21
PM MAIL   Вверх
baldman88
Дата 30.9.2020, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: нет
Всего: 7



Что-то мне кажется, что CopyFile должен быть public slot, а не private slot.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0959 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.