Вопрос по Qt4

Модератор: Модераторы разделов

Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Вопрос по Qt4

Сообщение Assuri »

Как сделать так, чтобы после нажатия на крестик программа не закрылась, а свернулась в System Tray?
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Вопрос по Qt4

Сообщение eduard_pustobaev »

Сам не пробовал пока, но по идее так:
При

Код: Выделить всё

QWidget::closeEvent ( QCloseEvent * event )

делать hide() виджету, и show() для QSystemtrayIcon.
Ну или просто делать hide(), если иконка в трее должна быть постоянно. А уже в трее сделать метод, либо реакцией на кликанье show() для виджета.
В дисгармонии со вселенной.
Спасибо сказали:
Chapay
Сообщения: 78

Re: Вопрос по Qt4

Сообщение Chapay »

В экзамплесах есть прога systrey помоему там реалезовано это причём очень наглядно всё в коде.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Вопрос по Qt4

Сообщение Liksys »

eduard_pustobaev, это кастыль.
-DooM-, QApplication имеет для этого свойство:
quitOnLastWindowClosed : bool
This property holds whether the application implicitly quits when the last window is closed.
The default is true.
If this property is true, the applications quits when the last visible primary window (i.e. window with no parent) with the Qt::WA_QuitOnClose attribute set is closed. By default this attribute is set for all widgets except transient windows such as splash screens, tool windows, and popup menus.
Access functions:
bool quitOnLastWindowClosed ()
void setQuitOnLastWindowClosed ( bool quit )
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Re: Вопрос по Qt4

Сообщение Assuri »

Всем спасибо - понял.

Теперь у меня другой вопрос.
Почему при коде ( см. ниже ) программа вылетает с ошибкой сегментирования при первом сворачивании?

Код:

//В конструкторе: systemTray = new QSystemTrayIcon; systemTrayMenu = new QMenu; showDiary = new QAction(systemTrayMenu); showDiary->setText(trUtf8("Восстановить")); hideDiary = new QAction(systemTrayMenu); hideDiary->setText(trUtf8("Скрыть")); connect(showDiary,SIGNAL(triggered()),this,SLOT(show())); connect(hideDiary,SIGNAL(triggered()),this,SLOT(hide())); systemTrayMenu->addAction(showDiary); systemTrayMenu->addAction(exitFile); systemTray->setContextMenu(systemTrayMenu); connect(systemTray,SIGNAL(messageClicked()),this,SLOT(hideOrShow())); systemTray->show(); void MainWindow::hideEvent(QHideEvent*) { systemTrayMenu->clear(); systemTrayMenu->addAction(showDiary); systemTrayMenu->addAction(exitFile); systemTray->setContextMenu(systemTrayMenu); } void MainWindow::showEvent(QShowEvent*) { systemTrayMenu->clear(); systemTrayMenu->addAction(hideDiary); systemTrayMenu->addAction(exitFile); systemTray->setContextMenu(systemTrayMenu); }


Update: все, сам догадался.
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Вопрос по Qt4

Сообщение eduard_pustobaev »

Darth Liksys писал(а):
30.08.2007 16:14
eduard_pustobaev, это кастыль.

Говорю же, что пока не присматривался конкретно.
В дисгармонии со вселенной.
Спасибо сказали: