2013-05-22 32 views
5

Come può essere implementata la barra degli strumenti nella barra superiore, ad esempio, ad esempio, Tiled è stata completata?Combina barra degli strumenti e barra del titolo in Qt

Tiled Normalmente, la barra degli strumenti appare come il seguente:

enter image description here

codice di esempio come è attualmente:

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = nullptr) { 
     auto *tbar = new QToolBar(); 
     tbar->addWidget(new QPushButton("Push Me")); 
     this->addToolBar(tbar); 
    } 
}; 
+0

Perché non guardi la fonte di Tiled? –

risposta

6

Se si sta ancora utilizzando Qt 4 .x, si può semplicemente utilizzare la funzione setUnifiedTitleAndToolBarOnMac(bool set) che è incluso nel QMainWindow:

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = nullptr) { 
     auto *tbar = new QToolBar(); 
     tbar->addWidget(new QPushButton("Push Me")); 
     this->addToolBar(tbar); 
     this->setUnifiedTitleAndToolBarOnMac(true); // activate Mac-style toolbar 
    } 
}; 

Vedi anche: https://qt-project.org/doc/qt-4.8/qmainwindow.html#unifiedTitleAndToolBarOnMac-prop

+0

Si prega di non pubblicare solo risposte di collegamento. Un collegamento può essere un'utile aggiunta a una risposta, ma la risposta dovrebbe essere leggibile senza il collegamento. Nel tuo caso non conterrebbe più alcuna informazione. – Sumurai8

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. – Kjuly

+0

Funziona anche in QT 5.2+. – Appleshell

1

Se sottoclasse QMainWindow e/o QToolBar e cambiare il tipo del frame che caricano/hanno, potresti essere in grado di ottenere l'effetto desiderato.

http://qt-project.org/doc/qt-4.8/qframe.html#details

http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-qframe

http://qt-project.org/doc/qt-4.8/stylesheet-customizing.html#the-box-model

Un altro modo per ottenere forse questo risultato, ma è una specie di hacky, si potrebbe mettere un altro widget senza cornice del colore giusto sopra la parte dei frame stanno mostrando Utilizzando Qt:Tool e Qt::WindowStaysOnTopHint e Qt::FramelessWindowHint, dovresti essere in grado di ottenere il tuo widget di copertura per nascondere il giunto.

Spero che questo aiuti.

0

Si potrebbe provare a rimuovere il bordo del telaio utilizzando un foglio di stile.

tbar->setStyleSheet("QToolBar { border: 0px }"); 
Problemi correlati