Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Удаление объекта, "каша малаша" :) 
:(
    Опции темы
chaos
Дата 4.11.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 5
Всего: 44



вот выкладываю свои небольшие наработки по данному топику smile

Давайте обсудим, покритикуем всякого рода узкие места и тп.

ЗЫ пример рабочий.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  test.zip 12,52 Kb
PM WWW   Вверх
chaos
Дата 4.11.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 5
Всего: 44



ЗЫЫ сырцы немного не к этому топику, но решение проблемы там есть.

PM WWW   Вверх
SABROG
Дата 4.11.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Проблемы со сборкой:

Код

Project MESSAGE: You are running qmake on a generated .pro file. This may not wo
rk!
Project MESSAGE: You are running qmake on a generated .pro file. This may not wo
rk!
Project MESSAGE: You are running qmake on a generated .pro file. This may not wo
rk!


В .pro файле есть такое:

Код

DEFINES += _WINDOWS QT_LARGEFILE_SUPPORT QT_DLL QT_NETWORK_LIB
INCLUDEPATH += . \
    ./debug \
    $(QTDIR)/mkspecs/win32-msvc2008 \
    . \
    ./GeneratedFiles



Т.е. ты изначально пишешь проект и ограничиваешь его использование одной ОС? Я бы написал свой .pro файл.

Не собирается на mingw:

Код

ConnectionService.cpp:20: error: invalid use of incomplete type 'struct QVariant'


Распространение исходников.

Код

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

    QTextCodec::setCodecForTr(QTextCodec::codecForName("windows-1251"));

    ConnectionService* connectionService = new ConnectionService;
    ConnectionDelegate* connectDelegate = new ConnectionDelegate(connectionService);

    //Создаем фронт контроллер и регестрируем команды


Я бы изначально придерживался стилей троллей. Исходники в ascii 7bit кодировке. Комментарии все на английском, интерфейс на английском, с программой распространять перевод, какой считаешь нужным.

Когда подключаешь заголовки, указывай к какому модулю он принадлежит:

Код

#include <QtNetwork/QTcpSocket>
#include <QtCore/QVariant>
#include <QtCore/QMap>


Это повысит читаемость кода и поможет разделять бизнес-логику от GUI.

Старайся использовать 0 вместо NULL.

Код

In file included from WTFrontController.hpp:4,
                 from WTFrontController.cpp:1:
Singleton.hpp: In static member function 'static T* Singleton<T>::instance()':
Singleton.hpp:15: error: 'NULL' was not declared in this scope
Singleton.hpp: At global scope:
Singleton.hpp:29: error: 'NULL' was not declared in this scope


Цитата(Bjarne Staustrup)

В языке С было очень популярно определять макрос NULL для представления такого нулевого указателя. Так как в C++ типы проверяются более жестко, использование банального нуля вместо NULL приведет к меньшим проблемам. Если вы чувствуете, что просто обязаны определить NULL, воспользуйтесь
const int NULL = 0;


Тролли так и делают.

В этом случае можно использовать QSharedPointer
Код

ConnectionService::~ConnectionService()
{
    delete socket;
}


В подобных местах можно использовать forward declaration:

Код

#include "IBusinessDelegate.hpp"
//#include "IServiceLocator.hpp"

//#include <QString>
class IServiceLocator;
class QString;

class ConnectionDelegate : public IBusinessDelegate
{
public:
    ConnectionDelegate(IServiceLocator* svc);

    void connect(const QString& server, const quint16 port);
    void disconnect();

private:
    IServiceLocator* service;
};


Как я понял, в роли посыльного ты выбрал классы на базе QEvent, а в роли команд классы на базе QObject'a. Без комментариев все достаточно смутно, скажу честно я мало что понимаю в логике написанного. Вероятно это какой-то паттерн, MVC чтоль?

Это сообщение отредактировал(а) SABROG - 4.11.2009, 21:22


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
chaos
Дата 4.11.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 5
Всего: 44



Цитата(SABROG @  4.11.2009,  18:20 Найти цитируемый пост)
MVC чтоль?

ну да.

проект должен будет собираться под разные ос. pro сделать нормальный планируется чуть позже.


по топику: удаление команды сделал через deleteLater в конце каждого из слотов + клиентскому коду не понадобится заботится об удалении команды

ЗЫ распростронять код не планируется, хотя бы пока не станет приемлемым. на счет кодировки - никогда не задумывался даже(изаю 2008 студию(Trial)).
со стилями тоже запарился(щас одновременно приходится писать и на Java, AS3, C++; щас дома пишу с использованием QT;)

Это сообщение отредактировал(а) chaos - 4.11.2009, 22:57
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.