Qt, Zamykanie aplikacji- obsługa zdarzenia

0

Witajcie,
mam taką sprawę, chcę by mój program wykonał pewną funkcję w momencie gdy użytkownik w mojej aplikacji (Qt) naciśnie czerwony krzyżyk.
Nie na rękę mi to, że po prostu się zamyka, ponieważ mój program przy zamknięciu potrzebuje wykonać parę opercji na plikach tymczasowych.
Wiecie jak to zrobić ?

0

kiedy mam tego użyć ? w moim oknie czy w main pliku ?

mnie interesuje zamykanie na "x" mojego MainWindow. jego dzieci mnie nie interesują tylko same MainWindow

0

i pytanie czy tą funkcję
void MainWindow::closeEvent(QCloseEvent *event)
{
if (maybeSave()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
}

gdzie mam ją deklarować gdzie? bo ja świeży jestem w Qt i nie za bardzo jeszcze wiem co i jak

0

Zadeklaruj ją w klasie okna dla którego chcesz obsłużyć to zdarzenie.

0

void okno::closeEvent(QCloseEvent *event)
{
on_actionExit_triggered();
}

chodzi o to by przy zamykaniu obsługiwał moje on_actionExit_triggered();

0

Napisałem coś takiego:

void okno::closeEvent(QCloseEvent *event)
 {
     //if (maybeSave()) {
      //   on_actionExit_triggered();
      //   event->accept();
    // } else {
      //   event->ignore();
    // }
    QMessageBox msgBox;
    msgBox.setWindowTitle("Exit");
    msgBox.setIcon(QMessageBox::Warning);
    msgBox.setWindowIcon(QIcon(":/new/prefix1/exit1.png"));
    msgBox.setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok );
    msgBox.button(QMessageBox::Ok)->setText(QString::fromStdString("Exit?"));
    msgBox.setDefaultButton(QMessageBox::Ok);//Set focus of ok button
    msgBox.setText("Do You realy want to Exit?");
    int ret = msgBox.exec();
     //User get input from returned value (ret). you can handle it here.
    switch (ret) {
           case QMessageBox::Ok:
               on_actionExit_triggered();
               event->accept();
               break;
           case QMessageBox::Cancel:
               event->ignore();
               break;
           default:
               // should never be reached
               break;
         }
 } 

ale nie działa ;/ why ?

/home/shial/Programowanie/C++/gui/abc-build-desktop/../abc/okno.cpp błąd:invalid use of incomplete type 'struct QCloseEvent'

0

I te błędy są na liniach
event->...

1

pewnie #include <QCloseEvent>

0

Jak już tutaj jesteś to może byś jeszcze mi odpowiedział na pytanie jak na linuxie w qt zrobić plik exe z tym wszystkim by już działało na każdym komputerze.
taki Development. hmm ?

0

żeby aplikacja działała w systemie Windows musisz skompilować ją odpowiednim kompilatorem(Mingw, MSVC) - pod Windows lub użyć crosscompilera(tego rozwiązania w takiej sytuacji nigdy nie stosowałem i nie wiem czy to jest możliwe w tym przypadku). Najprościej zainstalować Qt Creatora na Windowsie i tam skompilować projekt.

0

Dobrze ale ja chcę to zrobić pod linuxem. Nie orientujesz się czasem jak ?
Bo pod Windows to wszystko wszędzie ładnie jest opisane i mam zrobione ale pod Linuxem to inna bajka ;/

0

No to ściągasz QT Sdk na linuxie. wchodzisz do katalogu projektu. uruchamiasz

qmake
make

i masz plik wykonywalny. Jeżeli chcesz mieć plik z rozszerzeniem .exe to to rozszerzenie do niego dodaj :P

0

heh ale to nie tak.
Bo chodzi mi o to, że ja mam troche zasobów do swojej aplikacji i o biblioteki by na innych komputerach normalnie legalnie śmigało.
tak by ktoś mógł sobie pobrać mój program i z niego korzystać bez przeszkód. Rozumiesz?

0

A tego jeszcze wchodze w Qt Creatorze w BUdowanie->Publikuj Projekt...
A otrzymuje
Publikowanie nie jest aktualnie możliwe dla projektu "abc".
//
A do publikacji potrzebuje konta i to publikuje mój program w Store
//
i co to jest ?

I Pytanie co robi mi Qmake ?

0

tylko plik budowalny znaczy typu exe?

A i ja mam SDK na linuxie i windowsie : ) nie martw się :)

Ale ja nadal nie wiem jak go puścić do obiegu dla szaraków na linuxie ;p jeżeli wiecie co mam na myśłi

0

To ja już nie rozumiem z czym masz problem. Generalnie proponuję douczyć się podstaw frameworka z którego korzystasz.

Pytanie co robi mi Qmake

https://www.google.pl/search?q=qmake
facepalm... Idę spać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1