Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 137
1

Окно появляется и сразу исчезает

13.02.2015, 08:00. Показов 3485. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Раньше у меня в main.cpp создавалось окно mainWindow и показывалось. Теперь же я хочу, чтоб при запуске программы создавался класс General(не окно), который бы в конструкторе создавал и показывал mainWindow, код:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "general.h"
#include <QApplication>
 
int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    QString sDir = QCoreApplication::applicationDirPath();
    a.addLibraryPath(sDir + "/plugins");
 
    General w;
    //w.show();
 
    return a.exec();
}
C++ (Qt)
1
2
3
4
General::General()
{
    MainWindow mainWin;
    mainWin.show();}
Но при таком раскладе, окно создается, показывается, а потом программа сразу завершается....Можно как то это сделать?

P.S Зачем мне это нужно: по ходу написания кода в mainWindow накопилось много всякого важного кода, я хочу этот важный код перенести в отдельный класс General, и из него к mainWindow обращаться просто как к ещё одному окну. Если же создавать General в mainWindow, то будет крайне неудобно обращаться к mainWindow из General (только сигналами-слотами, если не ошибаюсь)

Добавлено через 59 минут
Посоветовали класс General наследовать от qApplication

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include "general.h"
 
int main(int argc, char* argv[])
{
    General a(argc, argv);
    QString sDir = QCoreApplication::applicationDirPath();
    a.addLibraryPath(sDir + "/plugins");
 
    MainWindow w;
    w.show();
    return a.exec();
}
Собственно, теперь мне нужно из General.cpp, получить доступ к окну w, как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2015, 08:00
Ответы с готовыми решениями:

Окно .exe появляется и сразу исчезает
Здравствуйте, не могу её по завершению остановить, пробовал с getch() system(&quot;pause&quot;) VS2010 ...

Контекстное меню появляется и сразу исчезает
Всем привет. Надо мне тут реализовать отображение контекстного меню при клике мышкой по картинке....

Окошко для printf/scanf появляется и сразу исчезает
вот код моей программы: #include &quot;stdafx.h&quot; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include...

Не загружается калькулятор: на доли секунды появляется и сразу исчезает
Уважаемые, перестал загружаться Калькулятор, т.е. на доли секунды появляется изображение...

4
127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451
13.02.2015, 08:08 2
tohtarov_ufa,
Цитата Сообщение от tohtarov_ufa Посмотреть сообщение
получить доступ к окну w, как это сделать?
Что Вы подразумеваете под "получить доступ к окну"? Доступ к полям\кнопкам\спинбоксам\...\?
1. Сделать их public.
А затем:
C++ (Qt)
1
w.lineEdit1->setText();
2. Для каждого подобного объекта сделать в классе MainWindow public методы, которые задают значения:
mainwindow.h
C++ (Qt)
1
2
public:
    void setMyEditText(const QString &str);
mainwindow.cpp
C++ (Qt)
1
2
3
4
void MainWindow::setMyEditText(const QString &str)
{
    lineEdit->setText(str);
}
general.cpp
C++ (Qt)
1
2
 
    w.setMyEditText(str2);
3. Сигналы и слоты. Думаю, тут пример не нужен, все легко. К тому же недавно обсуждалась подобная тема.

А вообще, мне кажется Вы немного перемудрили с логикой.
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 137
13.02.2015, 08:15  [ТС] 3
это понятно. проблема в том, что в файле general просто "не видно" окно w, оно же создано не в этом файле, а в main.cpp. Но, так как General унаследованно от qApplication то, все таки, окно w создано General'ом

Добавлено через 3 минуты
скорее всего тут нужно что то вроде qApplication->focusWinow или типо того. в общем какое то обращение через qApplication
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
13.02.2015, 12:33 4
Цитата Сообщение от tohtarov_ufa Посмотреть сообщение
General::General() { MainWindow mainWin; mainWin.show();}
ну дык все логично, вы объект на стеке создаёте, как только выходите за область видимости функции - все объекты на стеке уничтожаются... создайте в куче - будет профит
0
Pied Piper
236 / 227 / 57
Регистрация: 15.01.2013
Сообщений: 855
13.02.2015, 12:35 5
Учите c++...
2
13.02.2015, 12:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2015, 12:35
Помогаю со студенческими работами здесь

Окно появляется и исчезает
Люди.. помогите кто знает в чем причина.... уже все перепробовал и все одно и тоже .... ставил...

List Properties/Methods появляется и сразу исчезает access 2010
Народ, помогите, очень нужна эта функция List Properties/Methods в VBA access 2010, пишу, например...

При отладке программа появляется и сразу исчезает в режим редактирования
Решил я освоить Visual Studio C++ 2017. Нашел пример и оттуда все скопировал...

Появляется и быстро исчезает непонятное окно
Какое-то время назад начал замечать, что время от времени в панели задач проскакивает какое-то...

Окно появляется на доли секунды и исчезает
Привет всем! пожалуйста подскажите,я только недавно начал изучать С++ купил книгу Брэдли Л.Джонса...

Окно командной строки исчезает и появляется вновь
После компиляции любого кода на MS Visual Studio 2012 появляется окно командной строки. Приложение...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru