PDA

View Full Version : qt e c++


dennis8787
23-06-2011, 22:54
vi posto il codice di una applicazione che ho cercato di fare, ma naturalmente non funziona, al click del pulsante open, si dovrebbe aprire una altra finestra, il programma è costituito da due window, la mainwindow.ui e la dialog.ui
dialog.h
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
Q_OBJECT

public:
explicit Dialog(QWidget *parent = 0);
~Dialog();

private:
Ui::Dialog *ui;
};

#endif // DIALOG_H

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void quit();
// void save();
void open();
private:
Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"

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

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

mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog.h"

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

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

void MainWindow::quit()
{
close();
}

void MainWindow::open()
{
Dialog g;
g.show();
}

main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"

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

return a.exec();
}


ma eseguendolo non mi da errori, al click del pulsante quit esce, mentre al click del pulsante open, che dovrebbe aprire un altra finestra, non succede niente...
dove sbaglio?

tomminno
24-06-2011, 10:30
Dal codice sembra che tu non stia creando un dialog modale, pertanto avendolo allocato sullo stack viene immediatamente distrutto.
Dialog non modale:

Dialog dialog = new Dialog(this);
dialog.show();


Dialog modale:

Dialog dialog(this);
dialog.exec();