4397
|
Qt / Установка, сборка, отладка, тестирование / xcode 4 developer tools + Qt universal build [Mac OS X]
|
: Август 02, 2011, 17:02
|
Здравствуйте. Поставил себе xcode 4 вместе с его unix developer tools и теперь не могу собрать Qt (4.7.3 установлена из SDK, исходники имеются) с поддержкой архитектуры ppc - пишет, что отсутствует нужная версия компилятора (вроде бы новый xcode и сопутствующие - Intel-only). Раньше стояли developer tools от 3.2.6 и с ними я себе спокойно собирал universal сборку (делал это для 4.7.2), и какие-то части от них остались (в частности, ppc-gcc). Попытался задействовать их с помощью нехитрого хака Bash sudo ln -s /Developer/SDKs/MacOSX10.5.sdk/Developer/usr/llvm-gcc-4.2/lib/gcc/powerpc-apple-darwin9 /usr/llvm-gcc-4.2/lib/gcc/powerpc-apple-darwin10 sudo ln -s /Developer/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-g++-4.2 /Developer/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-gcc-4.2 /usr/llvm-gcc-4.2/bin
но где-то через полчаса после начала сборки выскочила ошибка об undefined symbols (лог не сохранил, но можно попытаться воспроизвести если нужно). К счастью, еще осталась универсальная 4.7.2, но хочется обновиться. Поставил качать 3.2.6 (4 гб), прибудет еще нескоро А пока жду, вопрос: кто-то успешно делал Qt universal build с использованием xcode 4 developer tools и как? Гугл мне в этом не помог.
|
|
|
4400
|
Qt / Qt-инструментарий / Re: QtCreator + Boost
|
: Август 01, 2011, 23:58
|
Еще раз спасибо. На пробелах... Разве економил?
вот при написании сообщений после запятых пробелы ставишь, а в коде - нет По поводу кирилици, а если умеешь понимать общий смысл текста на англ, но неуверенно и грамматически неправильно пишешь на англ, как тогда? На инглише не проканает.
тогда да, лучше на русском. но не забывать о UTF-8.
|
|
|
4401
|
Qt / Qt-инструментарий / Re: QtCreator + Boost
|
: Август 01, 2011, 22:46
|
И все же интересно, можно ли стандартными средствами узнать какой обьект послал сигнал? Например обьект сигнала textChanged? Что бы точнее вносить изменения. Например в C# делегаты обычно типа (Object sender, EventArgs arg), и всегда можно работать с обьектом, на который подписан метод. А так всем спс) посмотри на мой предыдущий пост Закоментировал, но варн на слот есть "QMetaObject::connectSlotsByName: No matching signal for on_dirToFromChanged(QString)" переименуй слот (убери у него "on_") П.С. kambala - вопрос к тебе личный, ты просматривал мой код, как тебе в общем? На что обратить внимание? Как оформление? Какие советы? Заранее благодарен. не экономить на пробелах и не писать кириллицу в исходниках П.С. еще вопросик, как можно вызывать другие исполнительные файлы или юзать консоль системы(или как там называется это)? Нужно например разархивировать. Думаю юзать rar.exe, консольный архиватор от Winrar. В питоне юзал типа os.system("console commands"). Наверное можно создавать новый процесс и т.п., но не хочется с этим связываться, хочется юзнуть простой метод какой то. http://www.prog.org.ru/index.php?topic=18532.msg124702#msg124702
|
|
|
4402
|
Qt / Qt-инструментарий / Re: QtCreator + Boost
|
: Август 01, 2011, 21:36
|
про ошибки при копировании - у тебя слот on_submitButton_clicked() вызывается 2 раза подряд при нажатии на кнопку, потому что один раз он был автоматически присоединен, а второй - ты явно соединяешь в конструкторе. так вот в логе видно, что один раз все замечательно копируется, а второй - сыпятся ошибки, потому что на месте назначения уже присутствуют файлы, а QFile::copy() копирует только если файла с таким же именем не существует. закомментируй connect(submitButton,SIGNAL(clicked()),this,SLOT(on_submitButton_clicked())); и все будет нормально.
про ошибку сигнала - поскольку твой слот начинается с "on_", то QObject пытается автоматически соединить сигнал с этим слотом (on_<sendername>_<signalname>()), но не находит нужного сигнала.
|
|
|
4403
|
Qt / Qt-инструментарий / Re: QtCreator + Boost
|
: Август 01, 2011, 20:29
|
эх, буст у меня не установлен но я убрал его и заменил на QRegExp. если пишешь в исходниках русские буквы (будь то комментарии или строки для программы), то уж сохраняй файл в UTF-8 хотя бы. под "файлами" я имел в виду тестовые файлы (книга или что там у тебя). я даже собрать не могу без ошибок. такое впечатление, будто ты забыл приложить файл формы, который лежит у тебя не в папке приложения, а возле нее (судя по записи в .pro файле и отсутствии нужных переменных в имеющемся .ui файле). П.С. А можно ли как то узнавать чей textChanged вызвался? Просто мне надо знать как поступить, в зависимости от текста двух LineEdit. И было бы меньше проверок, если бы я знал чей textChanged сделал сигнал? Просто интересно. Только учу куте, и возможно такое существует. метод sender(). C++ (Qt) QLineEdit *lineEdit = qobject_cast<QLineEdit *>(sender()); if (lineEdit) { // сравниваешь lineEdit с имеющимися }
|
|
|
4405
|
Qt / Qt-инструментарий / Re: QtCreator + Boost
|
: Август 01, 2011, 19:06
|
обычно временную переменную объявляют прямо в foreach: C++ (Qt) foreach(QString name,sl)
может быть проблема в обратном слеше (я говорил пару постов назад, что в Qt можно везде использовать прямой слеш) QFile::copy() (обе ее версии) возвращает bool - по этому можно определить успешной ли была операция, тогда и считывать errorString()
|
|
|
4406
|
Qt / Qt-инструментарий / Re: QtCreator + Boost
|
: Август 01, 2011, 17:50
|
1. для того, чтоб не "на ум приходило", надо читать документацию 2. регэксп не запускал, но должен работать 3. может ты там тоже только папку указывал без имени файла? нерабочий код в студию.
|
|
|
4407
|
Qt / XML / Re: Как читать Enter'ы?
|
: Август 01, 2011, 17:47
|
а то, что тег заканчивается на <binary> (без слеша) - так и должно быть или опечатка в посте?
|
|
|
4408
|
Qt / Qt-инструментарий / Re: QtCreator + Boost
|
: Август 01, 2011, 16:15
|
т.е. указать просто папку нельзя?
нет. неужели так сложно к папке приплюсовать слеш и имя файла? Кстати, вопрос такой. Как QRegExp::cap() узнает какую стрингу ему надо парсить, или предварительно обязал надо юзать QRegExp::indexIn()? Нет ли какой то setText или перегруженный cap с аргументом стринга?
QRegExp::cap() только возвращает захваченную подстроку (с параметром 0 - полное совпадение), а непосредственно поиск выполняется в QRegExp::indexIn() (или QRegExp::lastIndexIn() или QRegExp::exactMatch()). и тут тоже пытаешься сэкономить на строчке?
|
|
|
|
|