crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Тема закрытаНачать новую тему
> qDebug() << QString
smooky
  опции профиля:
сообщение 28.10.2008, 4:40
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 28.10.2008
Пользователь №: 401

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ну это же какое-то издевательство! :blink:
Ну столько примеров понаписано по этому QT, но всё так тяжело и непривычно, кошмар какойта!!!

1. Как же вывести содержимое QString в stdout та? Ну это же ужос какойта! Мне вот ваще нафиг строки не нужны, а если и нужны, то только для вывода в дебаг... Посути, это самое важное любого стринг класса должно быть...
2. Но зато блин, есть qDebug(const char*, ...), а как из QString получить указатель на char, нигде несказано...

Кароче, кроме как такого огорода, незнаю как: qDebug(str.toString().toStdString().c_str());
Ну и нафига мне такое?! Глаза б мои этот QT не видели...

Блин, бесит, немогу!

P.S. В MFC и то лучше всё и понятней...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.10.2008, 7:21
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


ничего не понял. smooky, бери себя в руки и объясни толком, что тебе нужно.

Если нужна отладка, то делай так:
QString  mystr;

  mystr = "Vasja Pupkin";
  qDebug() << "My name is " << mystr;

все!

Цитата(smooky @ 28.10.2008, 7:40) *
P.S. В MFC и то лучше всё и понятней...
Цитата(smooky @ 28.10.2008, 7:40) *
qDebug(str.toString().toStdString().c_str());
Если тебя этому MFC научил, то конечно Qt осваивать будет тяжко, т.к. строку str преобразовывать к строке излишне.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
smooky
  опции профиля:
сообщение 28.10.2008, 8:18
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 28.10.2008
Пользователь №: 401

Спасибо сказали: 0 раз(а)




Репутация:   0  


1. если вот так:
QString str("Damned Qt!");
qDebug(str.toStdString().c_str()); // то это работает! благо, STL он и в Африке STL (всё ясно и понятно, та не дураки делали)

qDebug() << str; // не работает, говорит что использована но не определена: invalid use of incomplete type QDebug()


и как быть?

С incomplete class/struct - это постоянные мучения в QT - это отдельная песня (один сплошной гемор)!!! Но это ладно, я уже привык, справляюсь!

2. Но непонятно, как быть тут:

// A.h

class QProcess;

class A
{
  private:
    slots:
      void slotProcessError(QProcess::ProcessError); // в A.cpp вот на это орёт, что incomplete struct (хотя это enum)
};


3. С сигналами и слотами - там ваще засада просто! :-(

P.S. Я никак немогу врубиться, ну как такую ерунду можно навыдумывать та?! Блин, в BOOST и то всё понятней и приятней (хотя библа считается совсем не простой для освоения)...

Я не хвалю MFC, там тоже полно своей кривизны! В дизайне!

Но там по крайней мере просто и понятно! И с++! Ну тут же, уже какойта не с++, а чтото своё навыдумывали!
Причина редактирования: используем тэг code=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 28.10.2008, 8:19
Сообщение #4


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Если тебе не нравится Qt то зачем ты его изучаешь?

1. Ты какие заголовочные файлы подключаешь?
2. Из псевдокода мало что понятно, но все-же: лучше пока напиши #include <QProcess> вместо class QProcess. будешь немного лучше понимать Qt будешь писать так. а пока лучше последуй моему совету.
3. А что не понятно с сигналами и слотами? Там же все элементарно.

Да литература которую я советую тебе почитать: Бланшет и Саммерфилд "Программирование GUI на С++" и Макс Шлее "Профессиональное программирование на С++ с использованием Qt4"

Сообщение отредактировал molchanoviv - 28.10.2008, 8:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.10.2008, 8:40
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(smooky @ 28.10.2008, 11:18) *
qDebug() << str; // не работает, говорит что использована но не определена: invalid use of incomplete type QDebug()
кто использована но не определена? Ты можешь конкретное сообщение об ошибке привести?

Цитата(smooky @ 28.10.2008, 11:18) *
void slotProcessError(QProcess::ProcessError); // в A.cpp вот на это орёт, что incomplete struct (хотя это enum)
А я вот не вижу здесь ни какого enum, счего ты взял что это enum. Приведи пример в котором выдается ошибка, я думаю Qt здесь даже близко не причем, все дело в твоих знаниях С++

Цитата(smooky @ 28.10.2008, 11:18) *
3. С сигналами и слотами - там ваще засада просто! :-(
для этого троли написали учебное пособие, пройди его и вопросы начального уровня отпадут.

Цитата(smooky @ 28.10.2008, 11:18) *
P.S. Я никак немогу врубиться, ну как такую ерунду можно навыдумывать та?! Блин, в BOOST и то всё понятней и приятней (хотя библа считается совсем не простой для освоения)...

Я не хвалю MFC, там тоже полно своей кривизны! В дизайне!
может тебе стоило изучать wxWidgets, MFC-подобная библиотека.
Даже
 BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_DRAWITEM,TMessage,DrawItem)
        MESSAGE_HANDLER(WMESPA_NOTIFY,TMessage,MyNotify)
END_MESSAGE_MAP(Form)

есть точь в точь как в MFC
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
smooky
  опции профиля:
сообщение 28.10.2008, 9:05
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 28.10.2008
Пользователь №: 401

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

знаний по с++ уверяю тебя достаточно! :-) Мне их вполне хватает, чтобы даже статьи в известный журнал писать! просто в Qt простые вещи сделаны либо слишком сложно, либо далеко неочевидно... Вот и вопрос у меня, зачем так через зад та делать?

1. ладно, с qDebug проехали... спасибо за ответы! но слишком много времени приходится затрачивать на такие простые вещи... (что собственно и вызывает моё недовольство в Qt)... тут и так всё через зад...
2. QProcess вызывает QProcess::error(QProcess::ProcessError error) когда происходит ошибка в процессе (ну или как там принято называть Сигнал)
CODE
// A.h

class QProcess; // forward

class A
{
private:
QProcess * process_;
slots:
// буду связывать с QProcess::error(...)
void slotProcessError(QProcess::ProcessError); // incomplete enum type used

// A.cpp

A::A()
{
process_ = new QProcess(this);
connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(slotProcessError(QProcess::ProcessError)));
}

A::slotProcessError(QProcess::ProcessError e)
{
UNUSED_ALWAYS(e); // простой макрос, чтобы варнинга не было
}

A.h:88: error: 'struct QProcess::ProcessError' not declared
moc_A.cpp: In member function 'virtual int A::qt_metacall(QMetaObject::Call, int, void**)':
moc_A.cpp:78: error: expected type-specifier
moc_A.cpp:78: error: expected `>'
moc_A.cpp:78: error: expected `('
moc_A.cpp:78: error: 'QProcess' incomplete type used.....
moc_A.cpp:78: error: expected primary-expression before ')' token
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 28.10.2008, 9:13
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Такое ощущение, что <QProcess> забыл подключить! Проверь подключение этого файла.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.10.2008, 9:21
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3291
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


smooky, после MFC мне тоже было сложновато переключится на Qt, но когда поработал с ним, то стал считать, что Qt лучше и продуманней чем MFC. Но это только вступление... :)

Скажи, а откуда в A.h может знать, что из себя представляет QProcess::ProcessError, если у тебя класс QProcess только объявлен? ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.10.2008, 9:24
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 28.10.2008, 12:21) *
Скажи, а откуда в A.h может знать, что из себя представляет QProcess::ProcessError, если у тебя класс QProcess только объявлен?
да ему уже все про это сказали:
Цитата(molchanoviv @ 28.10.2008, 11:19) *
лучше пока напиши #include <QProcess> вместо class QProcess.
Цитата(Litkevich Yuriy @ 28.10.2008, 11:40) *
А я вот не вижу здесь ни какого enum, счего ты взял что это enum.
Цитата(AD @ 28.10.2008, 12:13) *
Такое ощущение, что <QProcess> забыл подключить! Проверь подключение этого файла.


А он не в какую :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 28.10.2008, 9:47
Сообщение #10





Гости








    


Не, не могу сегодня уже решать сие задачу! 2-ое суток неспамши за компом... не могу сообразить...

Временно пока сделал заглуху, на чистом C написал функцию... быстро и работает...

Но вывод сделал один: карочи, кто хочет осложнить себе жизнь и другим, начните изучать и применять Qt!!! Гемор и бессоные ночи вам обеспечены!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Тема закрытаНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.7.2020, 15:00