Версия для печати темы
Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ qDebug() << QString
Автор: smooky 28.10.2008, 4:40
Ну это же какое-то издевательство!
Ну столько примеров понаписано по этому 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
ничего не понял. 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
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, там тоже полно своей кривизны! В дизайне!
Но там по крайней мере просто и понятно! И с++! Ну тут же, уже какойта не с++, а чтото своё навыдумывали!
Автор: molchanoviv 28.10.2008, 8:19
Если тебе не нравится Qt то зачем ты его изучаешь?
1. Ты какие заголовочные файлы подключаешь?
2. Из псевдокода мало что понятно, но все-же: лучше пока напиши #include <QProcess> вместо class QProcess. будешь немного лучше понимать Qt будешь писать так. а пока лучше последуй моему совету.
3. А что не понятно с сигналами и слотами? Там же все элементарно.
Да литература которую я советую тебе почитать: Бланшет и Саммерфилд "Программирование GUI на С++" и Макс Шлее "Профессиональное программирование на С++ с использованием Qt4"
Автор: Litkevich Yuriy 28.10.2008, 8:40
Цитата(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. С сигналами и слотами - там ваще засада просто! :-(
для этого троли написали http://crossplatform.ru/documentation/qtdoc4.3/tutorial.php, пройди его и вопросы начального уровня отпадут.
Цитата(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
да я бы и не изучал 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
Такое ощущение, что <QProcess> забыл подключить! Проверь подключение этого файла.
Автор: ViGOur 28.10.2008, 9:21
smooky, после MFC мне тоже было сложновато переключится на Qt, но когда поработал с ним, то стал считать, что Qt лучше и продуманней чем MFC. Но это только вступление...
Скажи, а откуда в A.h может знать, что из себя представляет QProcess::ProcessError, если у тебя класс QProcess только объявлен?
Автор: Litkevich Yuriy 28.10.2008, 9:24
Цитата(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
Не, не могу сегодня уже решать сие задачу! 2-ое суток неспамши за компом... не могу сообразить...
Временно пока сделал заглуху, на чистом C написал функцию... быстро и работает...
Но вывод сделал один: карочи, кто хочет осложнить себе жизнь и другим, начните изучать и применять Qt!!! Гемор и бессоные ночи вам обеспечены!
Автор: Litkevich Yuriy 28.10.2008, 9:54
Цитата(Гость_Гость_* @ 28.10.2008, 12:47)
Но вывод сделал один: карочи, кто хочет осложнить себе жизнь и другим, начните изучать и применять Qt!!! Гемор и бессоные ночи вам обеспечены!
на этом тему и закроем
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)