Здравствуйте, господа форумчане. Задача следующая, есть окно, на окне кнопка. Хочу чтобы при нажатии на кнопку создавалось еще одно окно. Задача простейшая, решается через connect(but, SIGNAL(clicked()), this, SLOT(my_func())). Но дело в том, что второе окно которое должно отображаться у меня описано в другом файле, и не как класс. Поэтому connect уже увы не срабатывает.
Для наглядности вот небольшой примерчик:
--main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
--mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include "newwindow.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
QPushButton *but;
};
#endif // MAINWINDOW_H
--mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
setFixedSize(250, 250);
move(150, 150);
setWindowTitle("Window 1");
but = new QPushButton(this);
but->setFixedSize(100, 25);
but->move(20, 20);
but->setText("Open window 2");
but->show();
connect(but, SIGNAL(clicked()), this, SLOT(newW()));
centralWidget();
}
MainWindow::~MainWindow()
{
delete this;
}
--newwindow.h
#include "mainwindow.h"
#include <QDialog>
void newW();
--newwindow.cpp
#include "newwindow.h"
void newW()
{
QDialog *dialog = new QDialog;
dialog->setFixedSize(150, 150);
dialog->move(100, 100);
dialog->setWindowTitle("Window 2");
dialog->show();
}
Как быть в данном случаи? Функция newW() не может быть обьявлена в файле newwindow.h как слот.