У меня есть приложение со значком области уведомления, поэтому главное окно может игнорировать событие Close. Я пытаюсь сохранить предпочтения и историю при выходе из приложения. Я также хочу обрабатывать журнал при запуске приложения. Несмотря на то, что приложение является кроссплатформенным, оно наиболее удобно/полезно в GNU/Linux, поэтому поведение Windows выходит на гораздо меньшую обеспокоенность. Управляющие окнами: < /p>
// main.cpp
# include
# include
# include
# include
# include
class M : public QMainWindow
{
Q_OBJECT
public:
~M();
public slots:
void onAboutToQuit();
private:
void closeEvent(QCloseEvent *);
};
M::~M()
{
std::cout
Я понятия не имею, почему onabouttoquit () присутствует в журнале, но m :: ~ m () в этом случае не ... < /p>
closeEvent()
onAboutToQuit()
{ Windows7 }
< /code> < /li>
< /ol>
3.
closeEvent()
{ icewm, E17 }
< /code>
4.
{ RazorQt, LxDE, LxQt, i3, budgie, fluxbox, awesome, openbox,
wmii, E16, pekWM, uwm, fvwm, xmonad, spectrwm, windowmaker,
herbstluftwm, WindowsXP }
< /code>
Поведение точно одинаково для любой комбинации (GCC 4.9.1 или Clang 3.4.2) и (QT 4.8.6 или QT 5.3.1). Однако, когда я попробовал QT 4.8 и QT 5.2 на Xubuntu, результаты были несколько иными: не было блокировки с QT 5.2 в XFCE - приложение закончилось изящно, независимо от видимости главного окна. Но блокирование присутствовало с QT 4.8 (так же, как в Manjaro). < /P>
Я знаю, что можно правильно обработать вход (без блокировки), потому что есть несколько приложений Это делает это просто отлично. Все они имеют значок зоны уведомления, закрыты для зоны уведомления, но не блокируйте регистрацию. Передача-QT, Kopete; < /li>
GTK на основе: aid исследовал исходный код Основанные на QT и не нашли ничего особенного для обработки BloseEvent: < /p>
https://github.com/goldendict/goldendic ... nwindow.cc
void MainWindow::closeEvent( QCloseEvent * ev )
{
if ( cfg.preferences.enableTrayIcon && cfg.preferences.closeToTray )
{
ev->ignore();
hide();
}
else
{
ev->accept();
qApp->quit();
}
}
https://github.com/bfleischer/transmiss ... mainwin.cc
void
TrMainWindow :: closeEvent( QCloseEvent * event )
{
// if they're using a tray icon, close to the tray
// instead of exiting
if( !myPrefs.getBool( Prefs :: SHOW_TRAY_ICON ) )
event->accept( );
else {
toggleWindows( false );
event->ignore( );
}
}
void
TrMainWindow :: toggleWindows( bool doShow )
{
if( !doShow )
{
hide( );
}
else
{
if ( !isVisible( ) ) show( );
if ( isMinimized( ) ) showNormal( );
//activateWindow( );
raise( );
QApplication::setActiveWindow( this );
}
}
git clone git://anongit.kde.org/kopete
void KopeteWindow::closeEvent ( QCloseEvent *e )
{
// if we are not ok to exit on close and we are not shutting down then just do what needs to be done if a
// window is closed.
KopeteApplication *app = static_cast ( kapp );
if ( !shouldExitOnClose() && !app->isShuttingDown() && !app->sessionSaving() ) {
// BEGIN of code borrowed from KMainWindow::closeEvent
// Save settings if auto-save is enabled, and settings have changed
if ( settingsDirty() && autoSaveSettings() )
saveAutoSaveSettings();
if ( queryClose() ) {
e->accept();
}
// END of code borrowed from KMainWindow::closeEvent
kDebug ( 14000 )
Как убедиться, что мое приложение Разве не блокируют регистрацию, даже если главное окно видно? настольные среды/управляющие окон возможно?
Подробнее здесь: https://stackoverflow.com/questions/251 ... -on-logout
Как изящно бросить QApplication в выпуске? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1740313277
Anonymous
У меня есть приложение со значком области уведомления, поэтому главное окно может игнорировать событие Close. Я пытаюсь сохранить предпочтения и историю при выходе из приложения. Я также хочу обрабатывать журнал при запуске приложения. Несмотря на то, что приложение является кроссплатформенным, оно наиболее удобно/полезно в GNU/Linux, поэтому поведение Windows выходит на гораздо меньшую обеспокоенность. Управляющие окнами: < /p>
// main.cpp
# include
# include
# include
# include
# include
class M : public QMainWindow
{
Q_OBJECT
public:
~M();
public slots:
void onAboutToQuit();
private:
void closeEvent(QCloseEvent *);
};
M::~M()
{
std::cout
Я понятия не имею, почему onabouttoquit () присутствует в журнале, но m :: ~ m () в этом случае не ... < /p>
closeEvent()
onAboutToQuit()
{ Windows7 }
< /code> < /li>
< /ol>
3.
closeEvent()
{ icewm, E17 }
< /code>
4.
{ RazorQt, LxDE, LxQt, i3, budgie, fluxbox, awesome, openbox,
wmii, E16, pekWM, uwm, fvwm, xmonad, spectrwm, windowmaker,
herbstluftwm, WindowsXP }
< /code>
Поведение точно одинаково для любой комбинации (GCC 4.9.1 или Clang 3.4.2) и (QT 4.8.6 или QT 5.3.1). Однако, когда я попробовал QT 4.8 и QT 5.2 на Xubuntu, результаты были несколько иными: не было блокировки с QT 5.2 в XFCE - приложение закончилось изящно, независимо от видимости главного окна. Но блокирование присутствовало с QT 4.8 (так же, как в Manjaro). < /P>
Я знаю, что можно правильно обработать вход (без блокировки), потому что есть несколько приложений Это делает это просто отлично. Все они имеют значок зоны уведомления, закрыты для зоны уведомления, но не блокируйте регистрацию. Передача-QT, Kopete; < /li>
GTK на основе: aid исследовал исходный код Основанные на QT и не нашли ничего особенного для обработки BloseEvent: < /p>
https://github.com/goldendict/goldendict/blob/master/mainwindow.cc
void MainWindow::closeEvent( QCloseEvent * ev )
{
if ( cfg.preferences.enableTrayIcon && cfg.preferences.closeToTray )
{
ev->ignore();
hide();
}
else
{
ev->accept();
qApp->quit();
}
}
https://github.com/bfleischer/transmission/blob/master/qt/mainwin.cc
void
TrMainWindow :: closeEvent( QCloseEvent * event )
{
// if they're using a tray icon, close to the tray
// instead of exiting
if( !myPrefs.getBool( Prefs :: SHOW_TRAY_ICON ) )
event->accept( );
else {
toggleWindows( false );
event->ignore( );
}
}
void
TrMainWindow :: toggleWindows( bool doShow )
{
if( !doShow )
{
hide( );
}
else
{
if ( !isVisible( ) ) show( );
if ( isMinimized( ) ) showNormal( );
//activateWindow( );
raise( );
QApplication::setActiveWindow( this );
}
}
git clone git://anongit.kde.org/kopete
void KopeteWindow::closeEvent ( QCloseEvent *e )
{
// if we are not ok to exit on close and we are not shutting down then just do what needs to be done if a
// window is closed.
KopeteApplication *app = static_cast ( kapp );
if ( !shouldExitOnClose() && !app->isShuttingDown() && !app->sessionSaving() ) {
// BEGIN of code borrowed from KMainWindow::closeEvent
// Save settings if auto-save is enabled, and settings have changed
if ( settingsDirty() && autoSaveSettings() )
saveAutoSaveSettings();
if ( queryClose() ) {
e->accept();
}
// END of code borrowed from KMainWindow::closeEvent
kDebug ( 14000 )
Как убедиться, что мое приложение Разве не блокируют регистрацию, даже если главное окно видно? настольные среды/управляющие окон возможно?
Подробнее здесь: [url]https://stackoverflow.com/questions/25108520/how-to-quit-qapplication-gracefully-on-logout[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия