powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
14 сообщений из 14, страница 1 из 1
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38313982
MIRNIY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста прояснить одну ошибку.

В QTCreator-е создано приложение, в котором используется трей. Появляется окно, при нажатии Window-ского [X] (закрыть), окно скрывается в трей. С помощью таймера через каждые 30 сек появляется окно и происходит определенные вычисления. Здесь все работает верно.

Однако, при нажатии на кнопку 'Close', на которое я написал событие, работает по другому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void window::on_closeButton_clicked()
{
    window::closeEvent();
}

void window::closeEvent(QCloseEvent *event=0)
{
    if (trayIcon->isVisible()) {
        trayIcon->showMessage(tr("Program is running..."),
        tr("This application is still running. To quit please click this icon and select Quit"));
        hide();
        event->ignore(); // Don't let the event propagate to the base class
    }
}



через какое-то время, появляется сообщение в трее (Program is running...), затем программа завершается ошибкой:
Код: plaintext
1.
2.
3.
4.
Starting C:\QtApplications\window-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug\debug\window.exe...
C:\QtApplications\window-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug\debug\window.exe attached
The program has unexpectedly finished.
C:\QtApplications\window-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug\debug\window.exe exited with code -1073741819
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314074
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot MIRNIY]Помогите пожалуйста прояснить одну ошибку.

Однако, при нажатии на кнопку 'Close', на которое я написал событие, работает по другому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void window::on_closeButton_clicked()
{
    window::closeEvent();
}

void window::closeEvent(QCloseEvent *event=0)
{
    if (trayIcon->isVisible()) {
        trayIcon->showMessage(tr("Program is running..."),
        tr("This application is still running. To quit please click this icon and select Quit"));
        hide();
        event->ignore(); // Don't let the event propagate to the base class
    }
}



window::closeEvent() равносильно window::closeEvent(0)
Вызов event->ignore() при event==0 не самая удачная мысль
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314107
MIRNIY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
v6y,

как можно по другому.

идея такая:
1. Пользователь видит окно (программу), производит определенные настройки.
2. После закрытия окна (с помощью on_closeButton_clicked(), либо стандартный [X]) в трее появляется сообщение.
3. Программа "спит", можно нажав иконку в трее вызрать ее.
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314292
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну так вызови close() в on_closeButton_clicked().
А еще проще - подключи сигнал срабатывания кнопки к слоту close() окна.
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314328
MIRNIY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rovan,

как написать?
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314365
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIRNIYкак можно по другому.

Код: plaintext
1.
 if (event) event->ignore()
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314386
MIRNIY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
v6y,

event->ignore(); не работает, при нажатии выходит "window.exe has stopped working..."
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314418
MIRNIY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всё что написано, не работает!

подскажите, пожалуйста правильно работающий механизм закрытия окна.
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314882
MIRNIY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
актуально
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38314987
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIRNIYактуально

Код: plaintext
1.
2.
3.
4.
void window::on_closeButton_clicked()
{
    qApp->quit();
}


?
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38315383
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MIRNIY, ты б документацию почитал, что ли.

Код: plaintext
1.
2.
3.
4.
void window::on_closeButton_clicked()
{
    close();
}
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38331975
MIRNIY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите код события [X] закрыть?
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38332487
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MIRNIY, держи
http://qt-project.org/doc/qt-5.0/qtcore/qevent.html#Type-enum QEvent::Close 19 Widget was closed (QCloseEvent).
Однако...ты идёшь неверным путём.
В твоём случае должен сработать предложенный мною вариант.
Если объяснишь, почему он тебе не подходит, помогу решить задачу.
...
Рейтинг: 0 / 0
QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
    #38333465
MIRNIY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rovan,

для события close() я получал следующую ошибка
C:\QtApplications\window\window.cpp:170: error: '((window*)this)->window::close' cannot be used as a function

оказывается, это было вызвано наличием члена класса с аналогичным названием. изменил название члена класса и запустил заново.

спасибо большое, rovan, очень Вам благодарен!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT: событие закрыть не работает так как стандарный "крестик" закрыть windows-a
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]