:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046

closeEvent для QMainWindow

28.11.2013, 12:30. Показов 21731. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Какой смысл в вызове closeEvent базового класса?

C++ (Qt)
1
2
3
4
5
void MyMainWindow::closeEvent(QCloseEvent *event)
{
     doSomething();
     QMainWindow::closeEvent(event); // Что это дает?
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2013, 12:30
Ответы с готовыми решениями:

Установка локализации для QMainWindow
В конструкторе класса-потомка от QMainWindow: RuLocale = new QLocale(QLocale::Russian, QLocale::RussianFederation); ...

Установить свой centralWidget для QMainWindow
Не получается установить кастомный центральный виджет главному окну. Т.е. он устанавливается, но Layout не применяется, как будто его нет...

Что лучше для конкретного случая QWidget или QMainWindow?
Всем привет. Посоветуйте, что лучше выбрать для создания программы с одним главным окном и парой дилоговых окон? QMainWindow или...

22
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
28.11.2013, 20:43
Студворк — интернет-сервис помощи студентам
Грубо говоря, при использовании своей реализации виртуальной функции неплохо бы в конце вызывать стандартную.

В данном конкретном случае это может и кажется вам странным, но к примеру в paintEvent у QPushButton не вызвав стандартную реализацию - получим пустой виджет.

То есть - это банально правильный, с точки зрения архитектуры Qt, код. Завтра они добавят в QMainWindow::closeEvent какую-то штуку, без которой ничего не будет работать, а вы ее предопределяете по своему и теряете этот функционал.

Во общем просто почитайте про виртуальные функции.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
28.11.2013, 20:43
Цитата Сообщение от Tulosba Посмотреть сообщение
Сообщение от Байт
Все даже для меня, новичка в Куте, представляется логичным и очевидным.
Очень в этом сомневаюсь, особенно учитывая Ваше сообщение ранее.
Простите, возможно не стоило бы эти глупости выяснять, и у вас совсем другие проблемы. Если так - плюньте, можно разобраться и потом, а можно и вовсе не разбираться.
В этом не очень умном "споре" появилась маленькая матрица
Code
1
2
новичка    представляется
сомневаюсь  сообщение_ранее
Если будет время и желание в этой ерунде, которую вы написали, разобраться, буду рад. А так - да ну ее!
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
29.11.2013, 10:45  [ТС]
Цитата Сообщение от RazrFalcon Посмотреть сообщение
Грубо говоря, при использовании своей реализации виртуальной функции неплохо бы в конце вызывать стандартную.
Необходимость такого вызова очень сильно зависит от того, что делает виртуальная функция. Далеко не всегда нужно вызвать всю цепочку по иерархии. Яркое подтверждение тому - абстрактный базовый класс.
Цитата Сообщение от RazrFalcon Посмотреть сообщение
В данном конкретном случае это может и кажется вам странным
Кстати, closeEvent и так довольно необычная функция, хотя бы с точки зрения поведения accept()/ignore().
См.последний абзац.
Цитата Сообщение от RazrFalcon Посмотреть сообщение
То есть - это банально правильный, с точки зрения архитектуры Qt, код.
Не могу с этим согласиться. В частности из-за упомянутого ранее кода вида:
C++ (Qt)
1
2
event->ignore();
QMainWindow::closeEvent(event);
Но, возможно, это стоит отнести к особенности именно closeEvent.

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
В этом не очень умном "споре" появилась маленькая матрица
Не очень понимаю, к чему тут эти философствования.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2013, 10:45

Как перехватить все closeEvent
Здравствуйте. Задача такая: Хочу перехватывать все события закрытия(по крестику) главных на данный момент окон. Прочитал про...

close() не дергает closeEvent(QCloseEvent *event)
В чем может быть причина?

Как-нибудь можно узнать по какой причине происходит closeEvent окна?
Написал программу, которая при нажатии "крестика" показывает диалоговое окно с подтверждением "вы уверены, что хотите выйти?"....

Инициализация QMainWindow
#include <QApplication> #include <QtWidgets> #include "ui_mainenterwindow.h" int main(int argc, char *argv) { QApplication...

QMainWindow в Windows
В Windows приложениях с графическим интерфейсом - обязательно использовать QMainWindow?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru