Russian Qt Forum

Qt => Вопросы новичков => Тема начата: sektor от Ноябрь 01, 2017, 19:53



Название: QSystemTrayIcon сворачивание окон
Отправлено: sektor от Ноябрь 01, 2017, 19:53
Добрый вечер всем. Писал приложение на linux kde. Приложение сворачивается в трей и по выбору из контекстного меню открывается окна. На linuxе все работает корректно, т.е в панеле задач отображается с иконкой, все как положено и сварачивается корректно. Перекомпилировал проект на windows открытое окно не отображается на панеле задач, не сворачивается, как будто минимизируется, как будто диологовое окно.

Код:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MySystemTray st;

    QApplication::setQuitOnLastWindowClosed(false);

    return a.exec();

}

реализация в классе MySystemTray
Код:
MySystemTray::MySystemTray(QWidget* pwgt):QLabel("<H1>GLab</H1>",pwgt)
    
{
     window= new MainWindow(this);
     window->show();
}


Название: Re: QSystemTrayIcon сворачивание окон
Отправлено: gil9red от Ноябрь 02, 2017, 05:36
А где код сворачивания окна? :)


Название: Re: QSystemTrayIcon сворачивание окон
Отправлено: sektor от Ноябрь 02, 2017, 05:46
Цитировать
А где код сворачивания окна? 
MainWindows унаследована от QMainWindows


Название: Re: QSystemTrayIcon сворачивание окон
Отправлено: sektor от Ноябрь 02, 2017, 13:08
Разобрался сам
Код:
MySystemTray::MySystemTray(QWidget* pwgt):QLabel("<H1>GLab</H1>",pwgt)
    
{
     window= new MainWindow;
     window->show();
}


Не нужно указывать родителя. Теперь другой вопрос, нужно ли удалять экземпляр window при закрытии приложения qApp quit(). ? Или он автоматически удалится ?


Название: Re: QSystemTrayIcon сворачивание окон
Отправлено: gil9red от Ноябрь 03, 2017, 08:20
Цитировать
А где код сворачивания окна? 
MainWindows унаследована от QMainWindows

Ну да, логично
просто ни hide (http://doc.qt.io/qt-4.8/qwidget.html#hide), ни showMinimized (http://doc.qt.io/qt-4.8/qwidget.html#showMinimized)