Hi,
I’m quite new with Qt, and I have some issues with my program. Some executions end without any errors, and others don’t.
Sometimes, the debug consol print a lot of lines, like there are a memory leak, sometimes the app stop promptly. I don’t know why, I started to observ this behaviour after adding a layout on the “preference window”.
This is my code :
main.cpp
#include <QtWidgets>
#include <QLineEdit>
#include <QToolButton>
#include <MainWindow.h>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtWidgets>
#include <QMenu>
#include <QToolBar>
#include <QTabWidget>
#include <QAction>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
private slots:
void newWindow();
void openPreferencesMenu();
private:
/*
QMenu *fileMenu;
QToolBar *fileToolBar;
QToolBar *editToolBar;
*/
QMenu *fileMenu;
QMenu *editMenu;
QAction *newAct;
QAction *editAct;
};
#endif // MAINWINDOW_H
PreferenceWindow.h
#define PREFERENCEWINDOW_H
#include <QtWidgets>
class PreferenceWindow : public QDialog
{
Q_OBJECT
public:
PreferenceWindow();
private:
QLineEdit *programPath;
QLabel *programPathLabel;
QLineEdit *programDefaultOptions;
QLabel * programDefaultOptionsLabel;
QFormLayout *layout;
QPushButton *acceptButton;
QPushButton *cancelButton;
};
#endif // PREFERENCEWINDOW_H
MainWIndow.cpp
#include <PreferenceWindow.h>
MainWindow::MainWindow() {
fileMenu = menuBar()->addMenu(tr("&File"));
editMenu = menuBar()->addMenu(tr("&Edit"));
newAct=new QAction(QIcon("images/new.png"), tr("&New"), this);
newAct->setShortcuts(QKeySequence::New);
newAct->setStatusTip(tr("Create a new file"));
editAct = new QAction(tr("&Edit"), this);
editAct->setShortcuts(QKeySequence::Preferences);
editAct->setStatusTip(tr("Set preferences"));
connect(newAct, SIGNAL(triggered()), this, SLOT(newWindow()));
connect(editAct, SIGNAL(triggered()), this, SLOT(openPreferencesMenu()));
fileMenu->addAction(newAct);
editMenu->addAction(editAct);
}
void MainWindow::openPreferencesMenu() {
PreferenceWindow *p = new PreferenceWindow();
}
void MainWindow::newWindow() {
MainWindow *w=new MainWindow();
w->setAttribute(Qt::WA_DeleteOnClose);
w->move(x()-10,y()-10);
w->show();
}
PreferenceWindow.cpp
#include <PreferenceWindow.h>
#include <QHBoxLayout>
PreferenceWindow::PreferenceWindow() {
this->setModal(true);
programPath= new QLineEdit(this);
programPathLabel=new QLabel(tr("program path : "), this);
layout=new QFormLayout();
programDefaultOptions=new QLineEdit(this);
programDefaultOptionsLabel=new QLabel(tr("Default options :"),this);
acceptButton = new QPushButton(tr("Accept"));
cancelButton = new QPushButton(tr("Cancel"));
layout->addRow(programPathLabel, programPath);
layout->addRow(programDefaultOptionsLabel, programDefaultOptions);
layout->addRow(acceptButton, cancelButton);
this->setLayout(layout);
connect(acceptButton, SIGNAL(clicked()), this, SLOT(accept()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
this->show();
}
Thanks,
Saroupille.
↧