Wie kann man Qapplication beim Abmelden ordnungsgemäß verlassen?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie kann man Qapplication beim Abmelden ordnungsgemäß verlassen?

Post by Anonymous »

Ich habe eine Anwendung mit dem Symbol "Benachrichtigungsbereich", sodass das Hauptfenster das enge Ereignis ignoriert. Ich versuche, Vorlieben und Verlauf der Beendigung der Anwendung zu speichern. Ich möchte auch das Abmelden abwickeln, wenn die Anwendung ausgeführt wird. Während die Anwendung plattformübergreifend ist, ist sie in GNU/Linux am bequemsten/nützlich. Daher ist das Windows-Abmeldeverhalten von viel geringer. Fenstermanager: < /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

Ich habe keine Ahnung, warum Onabouttoquit () im Protokoll vorhanden ist, aber M :: ~ m () ist in diesem Fall nicht ... < /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>

Das Verhalten ist genau für eine beliebige Kombination von (GCC 4.9.1 oder Clang 3.4.2) und (QT 4.8.6 oder QT 5.3.1) gleich. Als ich jedoch QT 4.8 und QT 5.2 auf Xubuntu versuchte, waren die Ergebnisse etwas unterschiedlich: Es gab keine Blockierung mit QT 5.2 in XFCE - die Anwendung endete unabhängig von der Sichtbarkeit des Hauptfensters anmutig. Aber die Blockierung war mit QT 4.8 vorhanden (genau wie in Manjaro). das macht das gut. Alle von ihnen haben das Symbol für das Benachrichtigungsbereich, sind für den Benachrichtigungsbereich geschlossen, blockieren jedoch nicht die Anmeldung. Transmission-QT, Kopete; < /li>
GTK-basiert: kühn, pidgin. < /Li>
< /ul>

Ich habe habe untersuchte den Quellcode von QT-basierten und fand nichts Besonderes im Umgang mit CloseEvent: < /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 )


So stellen Sie sicher Blockiert das Anmeldung nicht, auch wenn das Hauptfenster sichtbar ist?
Wie kann man sicherstellen Desktop -Umgebungen/Fenstermanager möglichst möglich? .

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post