как соединить слот открытия файла с menu "file"?
как соединить слот открытия файла с menu "file" ?
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void open();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QMenuBar>
#include <QAction>
#include <QVBoxLayout>
#include <QApplication>
#include <QFileDialog>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow *w = new QMainWindow;
QWidget *cw = new QWidget(w);
QMenuBar *menu = new QMenuBar(cw);
QHBoxLayout *L = new QHBoxLayout(cw);
QMenu *file = new QMenu("&Файл");
file->addMenu("Создать");
file->addMenu("Открыть");
menu->addMenu(file);
w->setCentralWidget(cw);
w->show();
return a.exec();
}
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QMenuBar>
#include <QAction>
#include <QVBoxLayout>
#include <QApplication>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
connect(file,SIGNAL(triggered()), this, SLOT(open()));
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::open()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "",
tr("Text Files (*.txt);;C++ Files (*.cpp *.h)"));
}
Ответы (1 шт):
Автор решения: e.n.shirokov
→ Ссылка
Вам нужно добавить QAction вместо QMenu:
QAction * actOpen = file->addAction("Создать");
connect(actOpen, &QAction::triggered, this, &MainWindow::open);