Вопрос по Qt4
Модератор: Модераторы разделов
-
Assuri
- Сообщения: 678
- Статус: #include <brain.h>
- ОС: Fedora 12
Вопрос по Qt4
Как сделать так, чтобы после нажатия на крестик программа не закрылась, а свернулась в System Tray?
-
eduard_pustobaev
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Вопрос по Qt4
Сам не пробовал пока, но по идее так:
При
делать hide() виджету, и show() для QSystemtrayIcon.
Ну или просто делать hide(), если иконка в трее должна быть постоянно. А уже в трее сделать метод, либо реакцией на кликанье show() для виджета.
При
Код: Выделить всё
QWidget::closeEvent ( QCloseEvent * event )делать hide() виджету, и show() для QSystemtrayIcon.
Ну или просто делать hide(), если иконка в трее должна быть постоянно. А уже в трее сделать метод, либо реакцией на кликанье show() для виджета.
В дисгармонии со вселенной.
-
Chapay
- Сообщения: 78
Re: Вопрос по Qt4
В экзамплесах есть прога systrey помоему там реалезовано это причём очень наглядно всё в коде.
-
Liksys
- Сообщения: 2910
Re: Вопрос по Qt4
eduard_pustobaev, это кастыль.
-DooM-, QApplication имеет для этого свойство:
-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
Всем спасибо - понял.
Теперь у меня другой вопрос.
Почему при коде ( см. ниже ) программа вылетает с ошибкой сегментирования при первом сворачивании?
Update: все, сам догадался.
Теперь у меня другой вопрос.
Почему при коде ( см. ниже ) программа вылетает с ошибкой сегментирования при первом сворачивании?
Код:
//В конструкторе:
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.