Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2012, 19:49   #1
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию тестовая программа

вот решил немножко посмотреть что такое qt

скачал

Qt Creator 2.4.1
Основан на Qt 4.7.4 (32-х битной)
Собран Jan 26 2012 в 09:48:31
Ревизия 8cd370e163

qt sdk 4.8.1

компилируется все ето mingw

ну на самом деле я никаких опций не менял, все должно бить стандартно.

первая программа которую я переписал с их сайта работает хорошо

а вот в второй рантамй еррор, наскольно хватает моих знаний не может отработать какой то деструктор.

Ну вот собствено сам код

Код:
#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTextEdit edit;
    QPushButton btn("Quit");



    QObject::connect(&btn, SIGNAL(clicked()), qApp, SLOT(quit()));

    QVBoxLayout layout;

    layout.addWidget(&edit);
    layout.addWidget(&btn);

    QWidget window;
    window.setLayout(&layout);
    window.show();



    return a.exec();
}
и еще вот стек может поможет

Код:
0	ntdll!TpWaitForAlpcCompletion	C:\Windows\system32\ntdll.dll	0	0x77c604e5	
1	??		0	0x28fba0	
2	ntdll!RtlCopyExtendedContext	C:\Windows\system32\ntdll.dll	0	0x77c22a2a	
3	??		0	0x28fe18	
4	ntdll!TpQueryPoolStackInformation	C:\Windows\system32\ntdll.dll	0	0x77c6153f	
5	??		0	0x390000	
6	ntdll!AlpcMaxAllowedMessageLength	C:\Windows\system32\ntdll.dll	0	0x77c1ab9a	
7	??		0	0x390000	
8	ntdll!LdrLoadAlternateResourceModuleEx	C:\Windows\system32\ntdll.dll	0	0x77bc3492	
9	??		0	0x28fe18	
10	msvcrt!free	C:\Windows\syswow64\msvcrt.dll	0	0x767398cd	
11	??		0	0x390000	
12	QVBoxLayout::~QVBoxLayout	qboxlayout.cpp	1518	0x902bce	
13	QWidget::~QWidget	qwidget.cpp	1586	0x935e65	
14	qMain	main.cpp	25	0x40156a	
15	WinMain	qtmain_win.cpp	131	0x401a12	
16	main		0	0x401738
так вот у меня вопрос, как заставить етот код работать


ах да ошибка появляется тогда когда нажать на кнопку quit или на красный крест

Последний раз редактировалось rUs_LAN; 06.08.2012 в 20:15.
rUs_LAN вне форума Ответить с цитированием
Старый 06.08.2012, 21:51   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Попробуйте выделять память под все динамически (через new). Проблема определенно в том, что уничтожением объектов обычно занимается родитель (т.е. тот объект, который был либо указан родителем дочернего объекта при создании последнего, либо усыновил вместе с лэйаутом, в который входил дочерний объект). А у вас объекты, во-первых, уничтожаются в конце как и всякие статические переменные, а во-вторых их еще пытается удалить родитель (сама по себе идея вызывать delete для указателя на статический объект... оригинальна).

В общем, new вам в руки. Статически создавать можно (и стОит) только объект класса приложения и виджеты нулевого уровня (т.е. не имеющие родителей). Все остальное - динамически.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 06.08.2012, 22:01   #3
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

спасибо поправил немножко стало работать, но меня явно озадачила документация к Qt в которой дают неработающие программы...

вот так заработало

Код:
#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget window;

    QTextEdit * edit = new QTextEdit;
    QPushButton  * btn = new QPushButton("Quit");



    QObject::connect(btn, SIGNAL(clicked()), qApp, SLOT(quit()));

    QVBoxLayout * layout = new QVBoxLayout;

    layout->addWidget(edit);
    layout->addWidget(btn);


    window.setLayout(layout);
    window.show();



    return a.exec();
}
rUs_LAN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестовая программа в Turbo Pascal cL1zMa Помощь студентам 6 23.01.2012 20:41
Тестовая программа Sarmat) Паскаль, Turbo Pascal, PascalABC.NET 6 24.01.2011 15:21
Курсовая , тестовая программа . Spiker01 Паскаль, Turbo Pascal, PascalABC.NET 1 12.01.2009 14:58
Тестовая программа с таймером Barrr Помощь студентам 11 21.10.2007 19:42
Тестовая программа cL1zMa Помощь студентам 6 29.03.2007 19:28