2010-10-29 18 views

Odpowiedz

21

Myślę, że jedyną rzeczą, której potrzebujesz, jest jakiś rodzimy widżet zastępczy. Jeśli utworzysz widżet bez rodzica, będzie on uważany za okno najwyższego poziomu. Ale jeśli utworzysz go jako element podrzędny okna najwyższego poziomu, jest on traktowany jako okno potomne i nie ma wpisu na pasku zadań jako takiego. Okno nadrzędne, z drugiej strony, również nie uzyskać wpis na pasku zadań, ponieważ nie można ustawić to widoczne: Ten kod działa dla mnie tutaj:

class MyWindowWidget : public QWidget 
{ 
public: 
    MyWindowWidget(QWidget *parent) 
     : QWidget(parent, Qt::Dialog) 
    { 

    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QMainWindow window; 

    MyWindowWidget widget(&window); 
    widget.show(); 

    return app.exec(); 
} 

No entry pasek zadań jest zawsze wyświetlane, jeśli jest to żebyś zamierzony.

+1

Stawałem w obliczu tego z jedną z aplikacji i po przeczytaniu zdałem sobie sprawę, że problem polegał na tym, że ktoś popełnił tworzenie obiektu za pomocą tego obiektu. To był błąd dla mnie. Usunąłem "to" i aplikacja działała idealnie, tzn. Wraca wpis na pasku zadań. Dzięki Ci. – Yash

5

Jeśli chcesz pokazać/ukryć widżet, nie pokazując go na pasku zadań, możesz sprawdzić okienko okien tego widgetu. Nie jestem w 100% pewny, ale myślę, że użyłem Qt::Dialog | Qt::Tool i Qt::CustomizeWindowHint, aby to osiągnąć, ale moje okno nie było w pełni urządzone. Inną rzeczą, o której możesz pamiętać, jeśli grasz z tym, jest polityka wyjścia aplikacji. Zamykanie/ukrywanie ostatniego okna pomocy zazwyczaj kończy działanie aplikacji, więc może musisz zadzwonić pod numer QApplication::setQuitOnLastWindowClosed(false), aby temu zapobiec ...

+1

'Qt :: Tool' jest odpowiednią flagą, która zapobiega wpisowi na pasku zadań. – ens

+0

można podać przykładowy kod. – GeneCode

+0

Nvm ma to: this-> setWindowFlags (Qt :: tool); – GeneCode

0

kod Pythona do achive to:

from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 

class MainWindow(QWidget): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent, Qt.Tool) 

window = MainWindow() 
window.show() 
3

Wystarczy ustawić Qt :: flaga podokno dla widgetu.

+0

To zdecydowanie najłatwiejsza odpowiedź. Działa dla mnie z Qt5. – TheSHEEEP

+0

To dobre rozwiązanie, jeśli Twoje okno nie ma ramki. Jeśli tak, to nie będziesz mieć domyślnych przycisków Windows (zamknij, zmaksymalizuj, zminimalizuj). – Szpaqn

+0

Gdzie mogę umieścić ten kod? Czy możesz podać bardziej szczegółowy przykład? – GeneCode

Powiązane problemy