Hello, I am writing an app which after the main window shows it has a menubar with the option to connect, with a "super" user which has some adittional menus/actions.
The thing is that I have different classes for different menubars and another class for creating the dialog.
The issue is that I cannot figure it out how to actually change the menubar.
Here is the main window header file:
#ifndef CAMER_H
#define CAMER_H
#include <QMainWindow>
#include <QSettings>
#include <QDialog>
#include <QDialogButtonBox>
#include <QLabel>
#include <QLineEdit>
#include <QGridLayout>
#include <QPushButton>
namespace Ui {
class camer;
}
{
Q_OBJECT
public:
explicit camer
(QWidget *parent
= 0);
~camer();
void setMeniuAdmin();
void setMeniuNeaut();
private:
Ui::camer *ui;
private slots:
void creareDialogConect();
public slots:
};
#endif // CAMER_H
#ifndef CAMER_H
#define CAMER_H
#include <QMainWindow>
#include <QSettings>
#include <QDialog>
#include <QDialogButtonBox>
#include <QLabel>
#include <QLineEdit>
#include <QGridLayout>
#include <QPushButton>
namespace Ui {
class camer;
}
class camer : public QMainWindow
{
Q_OBJECT
public:
explicit camer(QWidget *parent = 0);
~camer();
void setMeniuAdmin();
void setMeniuNeaut();
private:
Ui::camer *ui;
private slots:
void creareDialogConect();
public slots:
};
#endif // CAMER_H
To copy to clipboard, switch view to plain text mode
here is the main window cpp file:
#include "camer.h"
#include "conn.h"
#include "FerDialConect.h"
#include "meniuNeautentificat.h"
#include "meniuAdmin.h"
setMinimumSize(800,600);
setMeniuNeaut();
}
camer::~camer()
{
//settings saving function goes here
}
void camer::creareDialogConect(){
FerDialConect *fdc=new FerDialConect(this);
fdc->afisDial();
}
void camer::setMeniuNeaut(){
menNeaut *mn=new menNeaut(this);
setMenuBar(mn);
}
void camer::setMeniuAdmin(){
MeniuAdmin *mad=new MeniuAdmin(this);
setMenuBar(mad);
}
#include "camer.h"
#include "conn.h"
#include "FerDialConect.h"
#include "meniuNeautentificat.h"
#include "meniuAdmin.h"
camer::camer(QWidget *parent):QMainWindow(parent){
setMinimumSize(800,600);
setMeniuNeaut();
}
camer::~camer()
{
//settings saving function goes here
}
void camer::creareDialogConect(){
FerDialConect *fdc=new FerDialConect(this);
fdc->afisDial();
}
void camer::setMeniuNeaut(){
menNeaut *mn=new menNeaut(this);
setMenuBar(mn);
}
void camer::setMeniuAdmin(){
MeniuAdmin *mad=new MeniuAdmin(this);
setMenuBar(mad);
}
To copy to clipboard, switch view to plain text mode
here are the dialog header and cpp files:
#ifndef FERDIALCONECT_H
#define FERDIALCONECT_H
#include <QDialog>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <QDialogButtonBox>
#include <QMessageBox>
#include <QPushButton>
#include "camer.h"
class FerDialConect:public camer{
Q_OBJECT
public:
explicit FerDialConect(camer *parent = 0);
void afisDial();
private:
QGridLayout *amplasareDialCon,
*amplasareDialCon1,
*amplasareDialCon2;
private slots:
void con();
};
#endif // FERDIALCONECT_H
#ifndef FERDIALCONECT_H
#define FERDIALCONECT_H
#include <QDialog>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <QDialogButtonBox>
#include <QMessageBox>
#include <QPushButton>
#include "camer.h"
class FerDialConect:public camer{
Q_OBJECT
public:
explicit FerDialConect(camer *parent = 0);
void afisDial();
QString util,parola;
private:
QGridLayout *amplasareDialCon,*amplasareDialCon1,*amplasareDialCon2;
QLabel *etUtil,*etPar;
QLineEdit *txtUtil,*txtPar;
QPushButton *bCon,*bAnul;
QDialogButtonBox *cutieButCon;
QDialog *dialogConect;
private slots:
void con();
};
#endif // FERDIALCONECT_H
To copy to clipboard, switch view to plain text mode
#include "FerDialConect.h"
#include "meniuAdmin.h"
FerDialConect::FerDialConect(camer *parent):camer(parent){
etUtil
=new QLabel(tr
("Utilizator"));
etPar
=new QLabel(tr
("Parola"));
cutieButCon->setOrientation(Qt::Horizontal);
connect(cutieButCon,SIGNAL(rejected()),dialogConect,SLOT(reject()));
connect(cutieButCon,SIGNAL(accepted()),this,SLOT(con()));
amplasareDialCon->addLayout(amplasareDialCon1,0,0);
amplasareDialCon->addLayout(amplasareDialCon2,1,0);
amplasareDialCon1->addWidget(etUtil,0,0);
amplasareDialCon1->addWidget(txtUtil,0,1);
amplasareDialCon1->addWidget(etPar,1,0);
amplasareDialCon1->addWidget(txtPar,1,1);
amplasareDialCon2->addWidget(cutieButCon,0,0);
}
void FerDialConect::afisDial(){
dialogConect->setLayout(amplasareDialCon);
dialogConect->setFixedSize(300,200);
dialogConect->exec();
}
void FerDialConect::con(){
util=txtUtil->text();
int marimeUtil=util.size();
parola=txtPar->text();
int marimePar=parola.size();
if(marimeUtil==0 && marimePar!=0){
QMessageBox::critical(this, tr
("Eroare"), tr
("Campul de utilizator este necompletat."));
return;
}
else if(marimeUtil!=0 && marimePar==0){
QMessageBox::critical(this, tr
("Eroare"), tr
("Campul de parola este necompletat."));
return;
}
else if(marimeUtil==0 && marimePar==0){
QMessageBox::critical(this, tr
("Eroare"), tr
("Campurile sunt necompletate."));
return;
}
else {
if(util=="admin" && parola=="camer"){
dialogConect->accept();
camer::setMeniuAdmin();
}
}
}
#include "FerDialConect.h"
#include "meniuAdmin.h"
FerDialConect::FerDialConect(camer *parent):camer(parent){
dialogConect=new QDialog(this);
amplasareDialCon=new QGridLayout;
amplasareDialCon1=new QGridLayout;
amplasareDialCon2=new QGridLayout;
etUtil=new QLabel(tr("Utilizator"));
etPar=new QLabel(tr("Parola"));
txtUtil=new QLineEdit(util);
txtPar=new QLineEdit(parola);
txtPar->setEchoMode(QLineEdit::Password);
cutieButCon=new QDialogButtonBox;
cutieButCon->setOrientation(Qt::Horizontal);
bCon=new QPushButton(tr("Conectare"));
bAnul=new QPushButton(tr("Anulare"));
cutieButCon->addButton(bCon,QDialogButtonBox::AcceptRole);
cutieButCon->addButton(bAnul,QDialogButtonBox::RejectRole);
connect(cutieButCon,SIGNAL(rejected()),dialogConect,SLOT(reject()));
connect(cutieButCon,SIGNAL(accepted()),this,SLOT(con()));
amplasareDialCon->addLayout(amplasareDialCon1,0,0);
amplasareDialCon->addLayout(amplasareDialCon2,1,0);
amplasareDialCon1->addWidget(etUtil,0,0);
amplasareDialCon1->addWidget(txtUtil,0,1);
amplasareDialCon1->addWidget(etPar,1,0);
amplasareDialCon1->addWidget(txtPar,1,1);
amplasareDialCon2->addWidget(cutieButCon,0,0);
}
void FerDialConect::afisDial(){
dialogConect->setLayout(amplasareDialCon);
dialogConect->setFixedSize(300,200);
dialogConect->exec();
}
void FerDialConect::con(){
util=txtUtil->text();
int marimeUtil=util.size();
parola=txtPar->text();
int marimePar=parola.size();
if(marimeUtil==0 && marimePar!=0){
QMessageBox::critical(this, tr("Eroare"), tr("Campul de utilizator este necompletat."));
return;
}
else if(marimeUtil!=0 && marimePar==0){
QMessageBox::critical(this, tr("Eroare"), tr("Campul de parola este necompletat."));
return;
}
else if(marimeUtil==0 && marimePar==0){
QMessageBox::critical(this, tr("Eroare"), tr("Campurile sunt necompletate."));
return;
}
else {
if(util=="admin" && parola=="camer"){
dialogConect->accept();
camer::setMeniuAdmin();
}
}
}
To copy to clipboard, switch view to plain text mode
here is the default menubar files:
#ifndef MENIUNEAUTENTIFICAT_H
#define MENIUNEAUTENTIFICAT_H
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include "camer.h"
Q_OBJECT
public:
explicit menNeaut(camer *parent=0);
private:
private slots:
};
#endif // MENIUNEAUTENTIFICAT_H
#ifndef MENIUNEAUTENTIFICAT_H
#define MENIUNEAUTENTIFICAT_H
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include "camer.h"
class menNeaut:public QMenuBar{
Q_OBJECT
public:
explicit menNeaut(camer *parent=0);
private:
QMenu *meniuStandard;
QAction *conectare,*inchideApp;
private slots:
};
#endif // MENIUNEAUTENTIFICAT_H
To copy to clipboard, switch view to plain text mode
#include "meniuNeautentificat.h"
menNeaut
::menNeaut(camer
*parent
):QMenuBar(parent
){ meniuStandard
=new QMenu("Meniu");
conectare
=new QAction(tr
("Conectare"),
this);
connect(conectare,SIGNAL(triggered()),parent,SLOT(creareDialogConect()));
inchideApp
=new QAction(tr
("Inchide"),
this);
connect(inchideApp,SIGNAL(triggered()),parent,SLOT(inchideApplicatie()));
meniuStandard->addAction(conectare);
meniuStandard->addAction(inchideApp);
addMenu(meniuStandard);
}
#include "meniuNeautentificat.h"
menNeaut::menNeaut(camer *parent):QMenuBar(parent){
meniuStandard=new QMenu("Meniu");
conectare=new QAction(tr("Conectare"),this);
connect(conectare,SIGNAL(triggered()),parent,SLOT(creareDialogConect()));
inchideApp=new QAction(tr("Inchide"),this);
connect(inchideApp,SIGNAL(triggered()),parent,SLOT(inchideApplicatie()));
meniuStandard->addAction(conectare);
meniuStandard->addAction(inchideApp);
addMenu(meniuStandard);
}
To copy to clipboard, switch view to plain text mode
here are the files for the second menu(its just a basic setup):
#ifndef MENIUADMIN_H
#define MENIUADMIN_H
#include <QMenuBar>
#include "camer.h"
#include <QMenu>
#include <QAction>
Q_OBJECT
public:
explicit MeniuAdmin(camer *parent=0);
private:
private slots:
};
#endif // MENIUADMIN_H
#ifndef MENIUADMIN_H
#define MENIUADMIN_H
#include <QMenuBar>
#include "camer.h"
#include <QMenu>
#include <QAction>
class MeniuAdmin:public QMenuBar{
Q_OBJECT
public:
explicit MeniuAdmin(camer *parent=0);
private:
QMenu *meniu;
QAction *dateP;
private slots:
};
#endif // MENIUADMIN_H
To copy to clipboard, switch view to plain text mode
#include "meniuAdmin.h"
MeniuAdmin
::MeniuAdmin(camer
*parent
):QMenuBar(parent
){ meniu
=new QMenu(tr
("Meniu"),
this);
dateP
=new QAction(tr
("Date Personale"),
this);
meniu->addAction(dateP);
addMenu(meniu);
}
#include "meniuAdmin.h"
MeniuAdmin::MeniuAdmin(camer *parent):QMenuBar(parent){
meniu=new QMenu(tr("Meniu"),this);
dateP=new QAction(tr("Date Personale"),this);
meniu->addAction(dateP);
addMenu(meniu);
}
To copy to clipboard, switch view to plain text mode
Bookmarks