Wechsel QDialog -> QMainWindow

Alles rund um die Programmierung mit Qt
Antworten
joebar
Beiträge: 177
Registriert: 3. Oktober 2006 02:04

Wechsel QDialog -> QMainWindow

Beitrag von joebar »

Hallo,

ich habe ein Programm geschrieben welches als GUI QDialog verwendet und nicht QMainWindow. Wenn ich die Qt Doku richtig verstanden habe kann ich in QDialog keine Menues nutzen, nur in QMainWindow, daher moechte ich mein Programm nun aendern. Die GUI ist mit dem designer erstellt. Meine Idee war nun im Source Code sowie im ui File alle QDialog durch QMainWindow zu ersetzen. Leider geht das schon im ui File in die Hose. Wenn ich das geaenderte ui File im Desinger oeffnen moechte sehe ich meine (nun verhunzte GUI) nur im preview Modus, kann sie aber nicht mehr aendern. Das verhunzte waere nicht so schlimm, sind nur ein paar Clicks. Wie kann ich das ganze am besten umbauen?

Nutze Qt4.

Danke,
J.
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Moin,

du kannst schon Menüs im QDialog hinzufügen, musst halt nur alles von Hand erledigen (insbesondere das Layout) , ansonsten aber kein Problem.

Viele Grüße,
Flachkoepper
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Re: Wechsel QDialog -> QMainWindow

Beitrag von patrik08 »

joebar hat geschrieben:Hallo,

ich habe ein Programm geschrieben welches als GUI QDialog verwendet und nicht QMainWindow. Wenn ich die Qt Doku richtig verstanden habe kann ich in QDialog keine Menues nutzen, nur in QMainWindow, daher moechte ich mein Programm nun aendern. Die GUI ist mit dem designer erstellt. Meine Idee war nun im Source Code sowie im ui File alle QDialog durch QMainWindow zu ersetzen. Leider geht das schon im ui File in die Hose. Wenn ich das geaenderte ui File im Desinger oeffnen moechte sehe ich meine (nun verhunzte GUI) nur im preview Modus, kann sie aber nicht mehr aendern. Das verhunzte waere nicht so schlimm, sind nur ein paar Clicks. Wie kann ich das ganze am besten umbauen?

Nutze Qt4.

Danke,
J.
Mit QMenu ... http://doc.trolltech.com/4.2/qmenu.html kann man ueberall menu hinzufuegen ... jedoch qmainwindow kann es nur eine geben pro applikation.... sogar auf einen button... kann man menu setzen....

beispiel:

toolButton ist ein button....

Code: Alles auswählen

void Tab_Oggetto::MenuAlternativo()
{
    QAction *salvafileserver = new QAction(this);
    salvafileserver->setIcon(QIcon(QString::fromUtf8(":/images/img/text_editor/filesave.png")));
    salvafileserver->setText(tr("Salva sul server pagina - immagini"));
    salvafileserver->setStatusTip(tr("Salva sul server pagina - immagini")); 
    connect(salvafileserver, SIGNAL(activated()), this,  SLOT(Compose_Server_Xml()));
    
    
    QAction *schedacliente = new QAction(this);
    schedacliente->setIcon(QIcon(QString::fromUtf8(":/images/img/viewpdf.png")));
    schedacliente->setText(tr("Genera la scheda cliente PDF"));
    schedacliente->setStatusTip(tr("Genera la scheda cliente PDF")); 
    connect(schedacliente, SIGNAL(activated()), this,  SLOT(SchedulePDF()));
    
     QAction *visionacartella = new QAction(this);
    visionacartella->setIcon(QIcon(QString::fromUtf8(":/images/img/text_editor/fileopen.png")));
    visionacartella->setText(tr("Apri cartella"));
    visionacartella->setStatusTip(tr("Apri cartella")); 
    connect(visionacartella, SIGNAL(activated()), this,  SLOT(OpenPath()));
    
    
     QAction *browservedi = new QAction(this);
    browservedi->setText(tr("Visiona nel Browser"));
    browservedi->setIcon(QIcon(QString::fromUtf8(":/images/img/text_editor/applications-internet.png")));
    browservedi->setStatusTip(tr("Visiona nel Browser")); 
    connect(browservedi, SIGNAL(activated()), this,  SLOT(OpenBrowserPath()));
    
    
    QPushButton *toolButton = new QPushButton(tr("Azioni sul server"));;
    toolButton->setIcon(QIcon(QString::fromUtf8(":/images/img/text_editor/info.png")));
    QMenu *menu = new QMenu(this);
    
    menu->addAction(salvafileserver);
    menu->addAction(schedacliente);
    menu->addAction(visionacartella);
    menu->addAction(browservedi);
    toolButton->setMenu(menu);
    gridLayout6->addWidget(toolButton, 0, 4, 1, 1);
    
}
.........................
speack português italiano deutsch english castellà qt
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Man kann beliebig viele QMainWindow's pro Applikation haben...
joebar
Beiträge: 177
Registriert: 3. Oktober 2006 02:04

Beitrag von joebar »

Das mit den Menus hatte ich so aus der Trolltech Doku entnommen, na gut in QDialog hatten sie sich ueber Menus ausgeschwiegen und in QMainWindow erwaehnt, war wohl fehlinterpretation.

Ich hatte gelesen (weiss leider nicht mehr wo), dass man QDialog fuer einfachere UI's nimmt und QMainWindow fuer echte Applikationen. Wenn ich nun mehrere MainWindows in einer Applikation haben kann und auch Menus in QDialog sehe ich nicht mehr so richtig den Unterschied. Wo ist denn nun der wichtige Unterschied?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Das QMainWindow dir das managment von DockWidgets, StatusBar, ToolBar und MenuBars abnimmt...
kitov
Beiträge: 36
Registriert: 29. November 2006 12:24

Beitrag von kitov »

QDialog gibt Accepted oder Rejected zurueck( bei exec() )
Antworten