2013-05-22 33 views
5

W jaki sposób można zaimplementować pasek narzędzi w górnym pasku, na przykład Tiled?Połączyć pasek narzędzi i pasek tytułu w Qt

Tiled Normalnie Pasek wygląda następująco:

enter image description here

Przykład kodu, jak to jest obecnie:

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

Dlaczego nie patrzysz na źródło Kafelki? –

Odpowiedz

6

Jeśli nadal używa Qt 4 .x, możesz po prostu użyć funkcji setUnifiedTitleAndToolBarOnMac(bool set), która jest zawarta w 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 
    } 
}; 

Zobacz też: https://qt-project.org/doc/qt-4.8/qmainwindow.html#unifiedTitleAndToolBarOnMac-prop

+0

Nie publikuj odpowiedzi tylko dla linków. Link może być użytecznym dodatkiem do odpowiedzi, ale odpowiedź powinna być czytelna bez linku. W twoim przypadku nie zawierałoby już żadnych informacji. – Sumurai8

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odniesienia. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. – Kjuly

+0

Działa to również w QT 5.2+. – Appleshell

1

Jeśli podklasy QMainWindow i/lub QToolBar i zmienić rodzaj ramki, którą ładują/mają, możesz uzyskać efekt, który chcesz.

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

Innym sposobem może osiągnąć ten wynik, ale to rodzaj hacky, można umieścić kolejną bezramowego widget z właściwym kolorze na części klatek są wyświetlane. Korzystanie z Qt:Tool ii Qt::FramelessWindowHint, powinieneś być w stanie uzyskać swój widżet coverup, aby ukryć połączenie.

Nadzieję, że pomaga.

0

Możesz spróbować usunąć ramkę przy użyciu arkusza stylów.

tbar->setStyleSheet("QToolBar { border: 0px }"); 
Powiązane problemy