Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Пантер от Май 12, 2011, 09:43



Название: Помощь для новичков
Отправлено: Пантер от Май 12, 2011, 09:43
Конференция в jabber больше не существует.
Создан сервер в Discord https://discord.gg/AWVVFw9

Что-то в последнее время развелось много новичков и однотипных тем. Часть из них уже перекочевала в мои джабберные контакты.  :) В джаббере есть конференция по Qt, но она не для новичков. В общем, я создал конференцию в джаббере: qt-for-beginner@conference.jabber.ru, в которую приглашаю новичков и терпимых к новичкам людей. Сам там буду постоянно торчать и оказывать посильную помощь. Надеюсь, тема не бредовая и кому-нибудь понравится и пригодится.


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 12, 2011, 09:58
Это к админу, создай реквест в разделе "Работа сайта". 


Название: Re: Помощь для новичков
Отправлено: andrew.k от Май 13, 2011, 15:47
а как туда попасть (в эту конференцию)? :)


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 13, 2011, 15:56
Устанавливаешь jabber клиент, регистрируешься и смотришь как в данном клиенте войти в конференцию.
Вот небольшой список клиентов: vacuum, psi, qip, miranda.


Название: Re: Помощь для новичков
Отправлено: andrew.k от Май 13, 2011, 15:59
я знаю, что такое жаббер примерно. Пользуюсь жаббером от гмейла.
Просто никогда в конференции не заходил. И не знаю как это работает.
У меня клиент qutim. Он умеет конференции?
И какие учетные данные при этом использовать. Просто не очень представляю сам механизм.


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 13, 2011, 16:01
гугел намякивает (http://www.jabberworld.info/%D0%92%D1%85%D0%BE%D0%B4_%D0%B2_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D1%8E_%D0%B2_QutIM)


Название: Re: Помощь для новичков
Отправлено: andrew.k от Май 13, 2011, 16:02
 ;D
Ща буду пробовать )


Название: Re: Помощь для новичков
Отправлено: andrew.k от Май 13, 2011, 16:24
после того как я закрыл личку с тобой. я теперь никак не могу отправить тебе сообщение.
а в общий чат пишу, мне в ответ приходит мое же сообщение, и судя по всему ты их не видишь.


Название: Re: Помощь для новичков
Отправлено: ioann от Май 21, 2011, 03:30
У меня есть jabber ioann@jabber.uz, могу-ли я подключиться к конференции?


Название: Re: Помощь для новичков
Отправлено: Авварон от Май 21, 2011, 09:43
Можешь, разрешаю:) Я даже туда пробился...


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 23, 2011, 07:42
ioann, немного попозже пришлю тебе приглашение в конференцию.


Название: Re: Помощь для новичков
Отправлено: daimon от Июнь 09, 2011, 20:09
стучу в конференцию daimonkor@xmpp.ru. Будьте добры примите запрос


Название: Re: Помощь для новичков
Отправлено: Пантер от Июнь 15, 2011, 10:31
Был в отпуске. :)
Я тебе приглашение в конфу отправил.


Название: Re: Помощь для новичков
Отправлено: Layer от Июль 26, 2011, 12:14
мне приглашение вышлите пожалуйста-)
edd.layer@jabber.ru


Название: Re: Помощь для новичков
Отправлено: Пантер от Июль 26, 2011, 12:41
Выслал.


Название: Re: Помощь для новичков
Отправлено: snifferok от Июль 27, 2011, 09:01
Пришлите мне пожалуйста! 448143194-1@qip.ru


Название: Re: Помощь для новичков
Отправлено: beHDeP от Август 07, 2011, 16:53
Пришлите мне пожалуйста! true3mirc@jabber.ru


Название: Re: Помощь для новичков
Отправлено: Blackwanderer от Август 08, 2011, 07:21
И мне: pvantonov@gmail.com  :)


Название: Re: Помощь для новичков
Отправлено: Stiv от Сентябрь 09, 2011, 14:08
Пантер вышлите пожалуйста мне приглашение сюда: mcdfv@jabber.ru Я зарегился посылаю запрос авторизации
но всё равно показывается что конференция в оффлайн.
Спасибо за рание


Название: Re: Помощь для новичков
Отправлено: Пантер от Сентябрь 09, 2011, 14:09
Так не надо запрос авторизации отправлять. Нужно присоединиться к конференции (комнате, чату или как оно там в твоем клиенте). Какой клиент используешь?


Название: Re: Помощь для новичков
Отправлено: Stiv от Сентябрь 09, 2011, 14:30
У меня клиент Psi. На джаббер ру его советовали


Название: Re: Помощь для новичков
Отправлено: Пантер от Сентябрь 09, 2011, 14:54
Почитай (http://jabber.adygnet.ru/psi.html)


Название: Re: Помощь для новичков
Отправлено: Чистый от Сентябрь 10, 2011, 19:27
Вышлите мне brestows@jabber.ru


Название: Re: Помощь для новичков
Отправлено: Пантер от Сентябрь 12, 2011, 09:49
Высыланий не будет. Гуглите как поключиться в вашем клиенте к конференции.


Название: Re: Помощь для новичков
Отправлено: IzoLda от Ноябрь 23, 2011, 13:43
это еще в силе??не совсем поняла правда как проходит конференция...


Название: Re: Помощь для новичков
Отправлено: Пантер от Ноябрь 23, 2011, 13:47
Все в силе. Достаточно почитать про jabber и конференции в jabber.


Название: Re: Помощь для новичков
Отправлено: Abbattar от Декабрь 14, 2011, 17:35
Каптчу желательно подключить, а то ботов много нацепляешь.


Название: Re: Помощь для новичков
Отправлено: Abbattar от Декабрь 14, 2011, 17:56
и напиши свой джаббер, Panter что бы не в эту конфу писать, а в личку скидывать прошения в конфу на джаббере.


Название: Re: Помощь для новичков
Отправлено: Пантер от Декабрь 14, 2011, 18:11
Капча там включена. А приглашения я не рассылаю - сами подключайтесь.


Название: Re: Помощь для новичков
Отправлено: passwd root от Декабрь 23, 2011, 17:59
kenshin312@jabber.ru капча не работает (404 пишет)


Название: Re: Помощь для новичков
Отправлено: Пантер от Декабрь 26, 2011, 10:46
kenshin312@jabber.ru капча не работает (404 пишет)
Добавил в мемберы.


Название: Re: Помощь для новичков
Отправлено: KiberQ от Январь 04, 2012, 16:01
Сейчас конференция работает вообще? А то захожу, а там пусто совсем.


Название: Re: Помощь для новичков
Отправлено: mutineer от Январь 07, 2012, 16:40
Работает, как минимум бот там должен быть всегда))


Название: Re: Помощь для новичков
Отправлено: Bzzzuka от Апрель 07, 2012, 11:21
Чет там нет никого


Название: Re: Помощь для новичков
Отправлено: wildcat от Апрель 11, 2012, 14:57
что то не пускает. пишет что мои сообщения блокируются....


Название: Re: Помощь для новичков
Отправлено: Пантер от Апрель 11, 2012, 15:00
Там капчу надо ввести.


Название: Re: Помощь для новичков
Отправлено: aladin от Май 10, 2012, 11:13
пожалуйста, добавьте меня в конференцию
alex-net@im.starline.lg.ua


Название: Re: Помощь для новичков
Отправлено: mutineer от Май 10, 2012, 11:15
пожалуйста, добавьте меня в конференцию
alex-net@im.starline.lg.ua

Что мешает самому зайти?


Название: Re: Помощь для новичков
Отправлено: aladin от Май 10, 2012, 11:39
не могу зайти в конференцию
ввожу в поля
Сервер: conference.jabber.ru
комната qt-for-beginner
ник = любой ..
пишет что сервер не найден ..
Если можно отошлите пожалуйста приглашение на alexnet2004@gmail.com


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 10, 2012, 11:46
Каким клиентом пользуешься?


Название: Re: Помощь для новичков
Отправлено: aladin от Май 10, 2012, 11:53
пользую клиент psi
прочитал статейку вот тут http://jabber.adygnet.ru/psi.html (http://jabber.adygnet.ru/psi.html) ссылку нашёл выше в постах (на второй странице кажется) вроде бы сделал как там написано .. но чё-то не пускает меня
в прошлый раз я указал ящик своего джаббера,  приглашение пришло на него, только почему то не смог ничего с ним сделать ..


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 10, 2012, 11:58
пользую клиент psi
прочитал статейку вот тут http://jabber.adygnet.ru/psi.html (http://jabber.adygnet.ru/psi.html) ссылку нашёл выше в постах (на второй странице кажется) вроде бы сделал как там написано .. но чё-то не пускает меня
в прошлый раз я указал ящик своего джаббера,  приглашение пришло на него, только почему то не смог ничего с ним сделать ..

Там требуется капчу ввести. Если все правильно делал, должно было получиться. Если не получилось, что-то видимо сделал не так. :)


Название: Re: Помощь для новичков
Отправлено: aladin от Май 10, 2012, 12:01
подскажите пожалуйста, где мне искать эту самую капчу ?
вот скрин http://floomby.ru/content/5XeyLPWTVE (http://floomby.ru/content/5XeyLPWTVE)


Название: Re: Помощь для новичков
Отправлено: V1KT0P от Май 10, 2012, 12:10
подскажите пожалуйста, где мне искать эту самую капчу ?
вот скрин http://floomby.ru/content/5XeyLPWTVE (http://floomby.ru/content/5XeyLPWTVE)
Первый же запрос в гугле про пси и каптчу дает совет использовать Psi+ в котором есть плагин поддержки каптчи.


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 10, 2012, 12:14
подскажите пожалуйста, где мне искать эту самую капчу ?
вот скрин http://floomby.ru/content/5XeyLPWTVE (http://floomby.ru/content/5XeyLPWTVE)
После нажатия кнопки "Войти", должно открыть браузер на странице с капчей.


Название: Re: Помощь для новичков
Отправлено: aladin от Май 10, 2012, 12:32
скачал PSI+ поставил попробовал зайти в конференцию ..
результат тот же
вот скрин http://floomby.ru/content/IqplpQVFUa (http://floomby.ru/content/IqplpQVFUa)
помогите пожалуйста достучаться до конференции


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 10, 2012, 12:35
Странно. Может, твой сервер не пускает? А в другие конференции можешь входить?


Название: Re: Помощь для новичков
Отправлено: aladin от Май 10, 2012, 12:49
а других я конференций не знаю .. это первая конференция в которую я ломлюсь
есть предположение что это как то связано с операционкой .. у меня стоит win 7  ..
не так давно пробовал поставить Metarader 4, так win 7 не пусила сам установщик даже нужные файлы скачать ..
вот такая вот зараза эта windows 7


Название: Re: Помощь для новичков
Отправлено: mutineer от Май 10, 2012, 12:53
im.starline.lg.ua - это локальный сервер твоего провайдера? Может он просто не умеет S2S, то бишь умеет общаться только внутри себя? Попробуй учетку на общедоступном сервере сделать


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 10, 2012, 13:08
im.starline.lg.ua - это локальный сервер твоего провайдера? Может он просто не умеет S2S, то бишь умеет общаться только внутри себя? Попробуй учетку на общедоступном сервере сделать
Попробуй через гмэйловский акк.


Название: Re: Помощь для новичков
Отправлено: aladin от Май 10, 2012, 13:19
Всем большое спасибо. сделал аккаунт на jabber.ru  зашёл в конференцию  :)


Название: Re: Помощь для новичков
Отправлено: AHTuKiLLeR от Июль 15, 2012, 15:09
Капча не работает. Ошибка 404. Делать чего?


Название: Re: Помощь для новичков
Отправлено: Пантер от Июль 16, 2012, 12:40
Капча не работает. Ошибка 404. Делать чего?
Странно. Кинь мне в личку свой JID, я тебя добавлю в мемберы.


Название: Re: Помощь для новичков
Отправлено: alexandrQ от Сентябрь 10, 2012, 08:33
Добрый день. Запись на конференцию еще актуальна ?
alexandrQ@jabber.ru


Название: Re: Помощь для новичков
Отправлено: Пантер от Сентябрь 10, 2012, 10:30
Добрый день. Запись на конференцию еще актуальна ?
alexandrQ@jabber.ru

Адрес конфы есть. Записываться не нужно, просто заходи.


Название: Re: Помощь для новичков
Отправлено: A.D. от Май 31, 2013, 15:16
Здравствуйте! У меня заправшивает пароль для входа на конференцию.(
Клиент Empathy
arahnale@xmpp.ru


Название: Re: Помощь для новичков
Отправлено: TeapoT от Июль 19, 2013, 15:18
Доброго времени суток!

У меня клиент Psi. Подскажите какие значения вбивать в полях "сервер" и "пароль" при подключении к конференции.


Название: Re: Помощь для новичков
Отправлено: Aoi от Август 15, 2013, 16:21
Требуются помощь людей, сведущие в программировании на этом языке. Знакомому надо написать на QT сервер-драйвер, но есть пара ошибок. Нужен знающий человек, с которым можно  пообщаться. Аська/контакт/почта/скайп в личку. Тех, кто поможет, могу даже отблагодарить материально. Очень надо!


Название: Re: Помощь для новичков
Отправлено: neversleep от Август 15, 2013, 16:28
Требуются помощь людей, сведущие в программировании на этом языке. Знакомому надо написать на QT сервер-драйвер, но есть пара ошибок. Нужен знающий человек, с которым можно  пообщаться. Аська/контакт/почта/скайп в личку. Тех, кто поможет, могу даже отблагодарить материально. Очень надо!
Ну что вы, право.


Название: Re: Помощь для новичков
Отправлено: Aoi от Август 15, 2013, 18:23
ну если вам не лень помочь человеку и за просто так, будем очень признательны)) если хотите, оставьте сови контакты


Название: Re: Помощь для новичков
Отправлено: Alex Custov от Август 15, 2013, 18:26
Требуются помощь людей, сведущие в программировании на этом языке. Знакомому надо написать на QT сервер-драйвер, но есть пара ошибок. Нужен знающий человек, с которым можно  пообщаться. Аська/контакт/почта/скайп в личку. Тех, кто поможет, могу даже отблагодарить материально. Очень надо!

пишите вопросы об ошибка на форуме, в чём проблема?


Название: Re: Помощь для новичков
Отправлено: Alexu007 от Декабрь 12, 2013, 14:36
А-а-а!!! Я написал программу, но она не работает!!!  ;D  ;D  ;D


Название: Re: Помощь для новичков
Отправлено: chu от Январь 20, 2014, 01:30
Скачал с http://qt-project.org/downloads (http://qt-project.org/downloads) Qt 5.2.0 for Windows 64-bit (VS 2012, 590 MB).
Установил, запускаю первый пример, получаю ошибку:
Цитировать
:-1: ошибка: Необходимо задать компилятор для сборки. Сделать это можно в настройках комплекта.
В настройках, во вкладке компиляторы пусто. Расскажите,пожалуйста, откуда скачать компиляторы и как их добавить в Qt.


Название: Re: Помощь для новичков
Отправлено: kambala от Январь 20, 2014, 02:12
скачай вижуал студию или mingw


Название: Re: Помощь для новичков
Отправлено: Serr500 от Январь 20, 2014, 07:59
Qt 5.2.0 for Windows 64-bit (VS 2012, 590 MB)
Чтобы использовать этот пакет, необходимо установить Microsoft Visual Studio 2012.


Название: Re: Помощь для новичков
Отправлено: chu от Январь 21, 2014, 21:44
Qt 5.2.0 for Windows 64-bit (VS 2012, 590 MB)
Чтобы использовать этот пакет, необходимо установить Microsoft Visual Studio 2012.
Спасибо за помощь!
Установил студию, теперь могу собирать и запускать приложения, ура)
Но встал следующий вопрос. Во вкладке отладчики пусто. Где взять отладчик?


Название: Re: Помощь для новичков
Отправлено: kambala от Январь 21, 2014, 21:54
установи windows sdk, после этого креатор сам найдет отладчик


Название: Re: Помощь для новичков
Отправлено: chu от Январь 23, 2014, 10:00
установи windows sdk, после этого креатор сам найдет отладчик
Спасибо!
На Windows 8 после установки Windows SDK отладчик в Qt определился.
Но на Windows 7 установка Windows SDK ничего не дала.
Как на Windows 7 установить отладчик?


Название: Re: Помощь для новичков
Отправлено: gil9red от Январь 23, 2014, 10:41
установи windows sdk, после этого креатор сам найдет отладчик
Спасибо!
На Windows 8 после установки Windows SDK отладчик в Qt определился.
Но на Windows 7 установка Windows SDK ничего не дала.
Как на Windows 7 установить отладчик?
Вы можете в креторе вручную указать используемый отладчик ^^


Название: Re: Помощь для новичков
Отправлено: chu от Январь 23, 2014, 11:35
gil9red , не могу :(
В моих настройках кнопки "Обзор" и "Автоопределение" не активны.
Есть ссылка "Указать путь к исполняемому файлу Windows Console Debugger", которая почуму то открывает браузер и хочет выйти в интернет...
Но у меня нет подключения к интернету (и нет возможности установить подключение)  :(
Что еще посоветуйте?


Название: Re: Помощь для новичков
Отправлено: kambala от Январь 23, 2014, 12:41
в автоопределенном комплекте (kit) указать дебаггер нельзя, а в добавленном вручную можно


Название: Re: Помощь для новичков
Отправлено: chu от Январь 27, 2014, 11:49
в автоопределенном комплекте (kit) указать дебаггер нельзя, а в добавленном вручную можно
Спасибо!


Название: Re: Помощь для новичков
Отправлено: FliXis от Февраль 01, 2014, 01:27
Пытаюсь повторить пример из книги Бланшета, но возникла проблема:

У меня в папке такие файлы:
gotocelldialog.ui
main.cpp

Из командной строки создал .pro и makefile, но вот хидер gotocelldialog.h не создался почему-то. Хотя должен был.


Название: Re: Помощь для новичков
Отправлено: Johnik от Февраль 01, 2014, 01:54
в pro файл включили строку?
FORMS  += gotocelldialog.ui


Название: Re: Помощь для новичков
Отправлено: FliXis от Февраль 01, 2014, 02:14
в pro файл включили строку?
FORMS  += gotocelldialog.ui


В профайле сейчас это:

TEMPLATE = app
TARGET = gotocell
INCLUDEPATH += .

# Input
FORMS += gotocelldialog.ui
SOURCES += main.cpp


Название: Re: Помощь для новичков
Отправлено: Johnik от Февраль 01, 2014, 02:18
После того как в каталоге с pro файлом выполнили qmake сформировался makefile.
в makefile должно быть правило для формирования файла: gotocelldialog.h.

теперь на этапе make файл будет сгененирован и скомпилирован


Название: Re: Помощь для новичков
Отправлено: FliXis от Февраль 01, 2014, 02:41
После того как в каталоге с pro файлом выполнили qmake сформировался makefile.
в makefile должно быть правило для формирования файла: gotocelldialog.h.

теперь на этапе make файл будет сгененирован и скомпилирован
Не подскажите, как сделать make из консоли?
Использую mingw, в path все прописано.


Название: Re: Помощь для новичков
Отправлено: Johnik от Февраль 01, 2014, 12:54
1. qmake - подготовить makefile из *.pro
2. mingw32-make - скомпилить makefile

PS. сам использую msvc


Название: Re: Помощь для новичков
Отправлено: FliXis от Февраль 01, 2014, 17:30
Дело пошло, но с ошибками:

(http://s006.radikal.ru/i215/1402/06/a417ffacb698.png)

gotocell.pro
Код:
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TEMPLATE = app
TARGET = gotocell
INCLUDEPATH += .

# Input
SOURCES += main.cpp
HEADERS  += mainwindow.h
FORMS += gotocelldialog.ui

main.cpp
Код:
#include <QApplication>
#include <QDialog>

#include "ui_gotocelldialog.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Ui::GoToCellDialog ui;
QDialog *dialog = new QDialog;
ui.setupUi(dialog);
dialog->show();

return app.exec();
}

gotocelldialog.ui


Изначально в .pro почему-то вообще не было строчек
Код:
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
Пришлось добавить.


Название: Re: Помощь для новичков
Отправлено: FliXis от Февраль 01, 2014, 20:40
Пересоздал ui и все получилось.
Но вот почему в .pro файл по-прежнему не записалось автоматом -

Код:
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
Не понятно. Но это уже и не столь важно.  :)

Еще такой вопрос:
Как переносить настройки Креатора с компа на комп(особенно профиль расцветки текстового редактора)?


Название: Re: Помощь для новичков
Отправлено: kambala от Февраль 01, 2014, 22:32
%APPDATA%\QtProject дальше думаю разберешься


Название: Re: Помощь для новичков
Отправлено: libertas от Март 15, 2014, 19:21
а конференция qt-for-beginner@conference.jabber.ru работает?

Я скачал qip2012 создаю чат, в поле Conference server пишу qt-for-beginner@conference.jabber.ru,

в поле ник пишу придуманный ник, нажимаю ок - получаю error 400: bad request


Название: Re: Помощь для новичков
Отправлено: fedotok от Март 25, 2014, 15:36
Как бороться с QT при создании moc файлов

Например имею

Код:
#include <QObject>
class htmlhandler : public QObject
{
    Q_OBJECT
public:
    explicit htmlhandler(QObject *parent = 0);

public slots:
    void process_url();
};

И начинает ругаться на moc файл ошибка: undefined reference to `htmlhandler::process_url()'

Очистка проекта, и пересборка не помогает


Название: Re: Помощь для новичков
Отправлено: vizir.vs от Март 25, 2014, 16:11
а конференция qt-for-beginner@conference.jabber.ru работает?

Я скачал qip2012 создаю чат, в поле Conference server пишу qt-for-beginner@conference.jabber.ru,

в поле ник пишу придуманный ник, нажимаю ок - получаю error 400: bad request

У меня получилось подсоедениться без проблем


Название: Re: Помощь для новичков
Отправлено: kambala от Март 25, 2014, 19:22
Как бороться с QT при создании moc файлов

Например имею

Код:
#include <QObject>
class htmlhandler : public QObject
{
    Q_OBJECT
public:
    explicit htmlhandler(QObject *parent = 0);

public slots:
    void process_url();
};

И начинает ругаться на moc файл ошибка: undefined reference to `htmlhandler::process_url()'

Очистка проекта, и пересборка не помогает
реализация проблемного метода написана?


Название: Re: Помощь для новичков
Отправлено: fedotok от Март 26, 2014, 10:07
Как бороться с QT при создании moc файлов

Например имею

Код:
#include <QObject>
class htmlhandler : public QObject
{
    Q_OBJECT
public:
    explicit htmlhandler(QObject *parent = 0);

public slots:
    void process_url();
};

И начинает ругаться на moc файл ошибка: undefined reference to `htmlhandler::process_url()'

Очистка проекта, и пересборка не помогает
реализация проблемного метода написана?

Да она написана. Там дело в самой среде QT. Допустим когда объявляю его в заголовочном, не доступна функция рефакторинг->добавить реализацию

После перезагрузки компьютера ошибка исчезла.

Периодически такое возникает. Сейчас стоит Qt 5.2, на 4ых релизах тоже такое переодически бывало.
Можно ли с этим как-то бороться?


Название: Re: Помощь для новичков
Отправлено: InterWall от Май 09, 2014, 15:01
Есть вопрос насчет QHttp и QFtp в Qt 5.2
Если в старых версиях были вышеупомянутые библиотеки, то в 5.2 их нету. Говорят использовать QNetworkAccessManager, но с его пониманием у меня прямо скажем беда. Сколько не перечитывал документацию и не гуглил на остальные сайты - понимание данной библиотеки не пришло. Кто может рассказать?


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Август 19, 2015, 18:33

Я вообще-то пользовался Visual Studio. Как только информатика у нас началась, сразу захотелось сделать какую-нибудь прогу, в которой бы результаты рассчёта визуализировались... Через пень-колоду, но сделал-таки... Потом решил сделать прогу для телефона, типа в помощь студентам (прежде всего себе). Оказалось, в студии эта возможность не предусмотрена (и вообще, как мне сказали добрые люди "не хочешь быть привязанным к майкрософту, виндоусу и .NET Framework, переходи на Qt" Правильно мне казали?


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Август 19, 2015, 19:50
Правильно


Название: Re: Помощь для новичков
Отправлено: Igors от Август 20, 2015, 10:26
И одно другому не мешает - MSVC совсем неплохо дружит с Qt, нужно только поставить Add-In


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Август 20, 2015, 18:35
И одно другому не мешает - MSVC совсем неплохо дружит с Qt, нужно только поставить Add-In
Слышал о этом, но как-то не очень разобрался и в итоге поставил Qt отдельно. Это не принципиально? Или лучше поставить Add-In если VS уже установлена?

И ещё такой вопрос: в самом Qt много примеров и справочной информации встроено, но всё на английском. Не подскажите, есть ли где-то эти материалы с переводом?


Название: Re: Помощь для новичков
Отправлено: Igors от Август 20, 2015, 18:56
Слышал о этом, но как-то не очень разобрался и в итоге поставил Qt отдельно. Это не принципиально? Или лучше поставить Add-In если VS уже установлена?
Без Add-In придется вместо MSVC придется использовать Qt Creator, mingw и.т.п. То есть можно, но с MSVC придется расстаться, устраивает ли Вас это - смотрите сами.

И ещё такой вопрос: в самом Qt много примеров и справочной информации встроено, но всё на английском. Не подскажите, есть ли где-то эти материалы с переводом?
Полно и на русском, но что это за программист если инглиш не понимает? Плохо начинаете


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Август 21, 2015, 15:00
Всем добрый день)
Я решил последовать совету который мне дали выше, и установить Add-In к VS.
У меня Qt 5.5.0 и VS  ultimate 2013
Я устанавливал qt-vs-addin-1.2.3-opensource
Делал как написано в этой статье http://savepearlharbor.com/?p=181532
Только я переменные среды задал так (по аналогии)

(http://storage1.static.itmages.ru/i/15/0821/h_1440157912_1333273_1b99819dde.png)(http://storage9.static.itmages.ru/i/15/0821/h_1440157912_5000070_db16a540be.png)(http://storage8.static.itmages.ru/i/15/0821/h_1440157911_5470755_33b816fb41.png)
Вкладка Qt в студии появилась, однако при попытке собрать проект выдало ошибку:
Код:
--- (Import): Generating new project of paint2.pro file
--- (qmake) : Using: c:\qt\qt5.5.0\5.5\msvc2013_64\bin\qmake
--- (qmake) : Working Directory: E:\Qt\APP2\paint2
--- (qmake) : Arguments: -tp vc "paint2.pro" -o "paint2.vcxproj" QMAKE_INCDIR_QT=$(QTDIR)\include QMAKE_LIBDIR=$(QTDIR)\lib QMAKE_MOC=$(QTDIR)\bin\moc.exe QMAKE_QMAKE=$(QTDIR)\bin\qmake.exe

[1] - Could not find qmake configuration file win32-msvc2013_64.
[2] - Error processing project file: paint2.pro

--- (Import): Error(s): 2
--- (qmake) : Exit Code: 3

--- (Import): Generating new project of paint2.pro file
--- (qmake) : Using: c:\qt\qt5.5.0\5.5\msvc2013_64\bin\qmake
--- (qmake) : Working Directory: E:\Qt\APP2\paint2
--- (qmake) : Arguments: -tp vc "paint2.pro" -o "paint2.vcxproj" QMAKE_INCDIR_QT=$(QTDIR)\include QMAKE_LIBDIR=$(QTDIR)\lib QMAKE_MOC=$(QTDIR)\bin\moc.exe QMAKE_QMAKE=$(QTDIR)\bin\qmake.exe

[1] - Could not find qmake configuration file win32-msvc2013_64.
[2] - Error processing project file: paint2.pro

--- (Import): Error(s): 2
--- (qmake) : Exit Code: 3
судя по строчке
Код:
[1] - Could not find qmake configuration file win32-msvc2013_64.
я не правильно задал QMAKESPEK. Во всяком случае мне так кажется. Проблема в том что как правильно, я не знаю.


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Август 21, 2015, 15:05
win32-msvc2013 указывайте


Название: Re: Помощь для новичков
Отправлено: Hellraiser от Август 21, 2015, 15:51
При установленном дополнении к студии переменные QMAKESPEC и QTDIR определять не надо. Дополнение сделает это само, в зависимости от выбранной в проекте версии Qt. PATH надо определить только для запуска приложений вне студии, т.е. для поиска Qt dll.
P.S. Почитал статью - больше вреда, чем пользы. Переменные определяются автоматически, подключаемые модули выбираются через меню, список библиотек, директивы и пути поиска тоже определяются самим плагином.


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Август 21, 2015, 19:18
win32-msvc2013 указывайте
Спасибо) Заработало))

Ну а в целом, как я теперь понял, можно было вообще без всяких заморочек просто поставить Add-On?


Название: Re: Помощь для новичков
Отправлено: Igors от Август 22, 2015, 10:33
Ну а в целом, как я теперь понял, можно было вообще без всяких заморочек просто поставить Add-On?
Та не знаю, у меня в свое время на MSVC 2012 сразу встало, никаких статей не читал  :) Была одна проблема - не хотела переводить имеющийся MSVC проект в Qt, пришлось добавить строку в файл проекта


Название: Re: Помощь для новичков
Отправлено: Ilia_Ivanov от Сентябрь 24, 2015, 22:39
У меня Qt 5.5.0 и VS  ultimate 2013

Маленький совет - если вы не на рабочем компьютере, где Ultimate версия куплена и поставлена за вас, используйте версию Community, лучше сразу 2015. Если вам всё купили, нет проблем, а так Microsoft вам делает щедрый подарок. Пиратка в наше время сильно не одобряется, сам начинал с Ultimate версии, сильно удивился, когда вышла бесплатная редакция.


Название: Re: Помощь для новичков
Отправлено: Ilia_Ivanov от Сентябрь 24, 2015, 22:46
Та не знаю, у меня в свое время на MSVC 2012 сразу встало, никаких статей не читал  Улыбающийся Была одна проблема - не хотела переводить имеющийся MSVC проект в Qt, пришлось добавить строку в файл проекта

Я начинал с Qt Creator, был поражён, насколько неудобная в нем отладка. Тормозит на каждом брекпойнте. Со студией проблем нет вообще никаких, кроме одной - не хочет открывать файл Qt Project. Было бы очень удобно. Скачал Qt Source, открыл файл pro  из комплекта - студия сделала невалидный файл решения, который не открывается. И так с каждым проектом. Designer запускается отлично, Linquist не проверял, когда дойдут руки до локализации, проверю.


Название: Re: Помощь для новичков
Отправлено: Meloman от Ноябрь 17, 2015, 15:57
Здравствуйте.
Ранее был установлен Qt Creator 3.3.2. В нем была возможность при создании нового проекта выбрать "Интерфейс Qt Quick"
После переустановки винды установил Qt Creator 3.5.1 , в нем нет такого выбора.
Вопрос: можно ли создавать в новом Креаторе простые QML проекты, без использования С++.
Ранее созданные проекты отлично работают, новые создать не получается. Настройки креаторы рыл - ничего не нашел.
Спасибо.

Благодарю тех, кто откликнулся (а может хотел, но не успел откликнуться)  ;) Нашел сам. Теперь этот тип проекта располагается в разделе "Другой проект" именуется "Qt Quick UI" и "Qt Quick Controls UI".


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Март 14, 2016, 23:28
Сделал простую рисовалку. Суть: при событии mousePressEvent координаты точки сохраняются в массив. Потом в цикле все точки из этого массива отрисовываются в событии paintEvent
Тоже самое происходит при событии mouseMoveEvent но точки сохраняются в другой массив. К тому же при нажатии правой кнопки объекту QPainter присваивается перо другого цвета.

Проблема такая: линия всегда рисуется непрерывная, если закончить линию в одно месте, а потом начать в другом, начало второй линии соединяется с концом первой.
К тому же, при изменении цвета меняется цвет всего что нарисовано. При описанном методе рисования иначе и быть не может, очевидно.  Ведь фактически каждый раз вся картинка перерисовывается заново на основе массивов.
А как сделать чтоб линии рисовались отдельно, не соединяясь вместе, и каждая своим цветом?
Понятно, что можно для каждой новой линии создавать массив, и и записывать дополнительно  переменную отвечающую за цвет, а в событии рисования всё это рисовать. Но наверняка ведь есть способ попроще?

Ну и сама программа:

main:
Код:
#include "paint.h"
#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    paint w;
    w.show();
    return a.exec();
}

paint.h:
Код:
#ifndef PAINT_H
#define PAINT_H

#include <QtWidgets>

class paint : public QWidget
{
    Q_OBJECT
public:
    int btn;
    QVector<QPoint> vec;
    QVector<QPoint> vec2;
    explicit paint(QWidget *parent = 0);

protected:
    virtual void paintEvent(QPaintEvent*);
    virtual void mousePressEvent(QMouseEvent * ev);
    virtual void mouseMoveEvent(QMouseEvent * ev2);

signals:

public slots:
};

#endif // PAINT_H

paint.cpp
Код:
#include "paint.h"

paint::paint(QWidget *parent) : QWidget(parent)
{

}

void paint::paintEvent(QPaintEvent *)
{
    QPainter p(this);
    p.setPen(QPen(Qt::black,3));
    if(btn==1){
        p.setPen(QPen(Qt::white,3));
    }
   
   
    for(int i = 0; i<vec.count(); ++i)
   {
      p.drawPoint(vec[i]);
    }

     for(int i = 1; i<vec2.count(); ++i)
    {
    p.drawLine(vec2[i-1],vec2[i]);
     }
   
}



void paint::mousePressEvent(QMouseEvent *ev)
{
    if(ev->button()==Qt::RightButton){
        btn=1;
    }
    else{
        btn=0;
    }
    vec.insert(vec.end(),ev->pos());
     this->repaint();

}

void paint::mouseMoveEvent(QMouseEvent *ev2)
{

    vec2.insert(vec2.end(),ev2->pos());
    this->repaint();
}



Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Март 15, 2016, 09:45
Кто такой vec и vec2? Подозреваю, QVector<QPoint>. У вектора есть замечательные методы, добавляющие в конец: push_back, append и operator<<
Код
C#
vec.append(ev->pos());
vec2 << ev2->pos()

Рисуются линии непрерывно, потому что вы в цикле просите брать предыдущую точку и текущую.
В идеале, вам надо бы завести структуру Segment, с 2 точками и цветом или воспользоваться QPair<QPoint, QPoint>. Если хочется побыстрее, то измените цикл на

Код
C++ (Qt)
for(int i = 1; i<vec2.count(); i += 2)
 

Нет ничего страшного хранить отдельно цвета и каждый раз их использовать при перерисовке.
Быть может более опытные пользователи подскажут, есть ли возможность рисовать на прозрачный холст и при перерисовке натягивать его на виджет чтобы не хранить цвета, но мне кажется этот метод будет не очень.


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Март 15, 2016, 14:14
Кто такой vec и vec2? Подозреваю, QVector<QPoint>. У вектора есть замечательные методы, добавляющие в конец: push_back, append и operator<<
Спасибо)

Нет ничего страшного хранить отдельно цвета и каждый раз их использовать при перерисовке.
Быть может более опытные пользователи подскажут, есть ли возможность рисовать на прозрачный холст и при перерисовке натягивать его на виджет чтобы не хранить цвета, но мне кажется этот метод будет не очень.
Я и не говорю, что это страшно... Напротив, в каких-то ситуациях возможность быстро изменить стиль линии и цвет сразу всего рисунка может оказаться очень даже полезной...  Просто я делал раньше нечто подобное в Visual Studio и там в методе рисования новые точки просто дорисовывались к тому, что уже есть в окне. Никаких дополнительных массивов и проблем с рисованием разными цветами...  Я и подумал, может в Qt есть аналогичный режим?


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Март 26, 2016, 00:55
Здравствуйте!
Такая проблема:
 Захотел программу из Qt на другом компе запустить... Она сначала ругалась, что отсуствуют длл, я их искал и клал с программой в одну папку. Вроде в интернете написано что так надо делать... Но в конце концов оно мне выдало какое-то сообщение не касающееся длл и всё равно не запускается.
Что делать?


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Март 26, 2016, 01:03
папку platform тоже киньте. точнее windows.dll


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Март 26, 2016, 01:05
А вообще есть такая штука как Windows Deployment Tool
ссылка (http://doc.qt.io/qt-5/windows-deployment.html)


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Март 30, 2016, 20:44
Спасибо за советы)
на всякий случай напишу:
Я нашел подробное руководство (http://blog.harrix.org/?p=1015), как и что делать, что откуда и куда кидать, всё заработало...
может пригодиться ещё кому...

Следующий этап - хочу ту же прогу запустить на Андроиде. Тоже нашел подробное руководство (http://blog.harrix.org/?p=2651), сделал всё по пунктам, скачал и установил всё что написано и как написано,  но почему-то не работает... Знакомые говорят, что они делали по той же статье и всё заработало. В чём может быть дело?
У меня постоянно выдаёт [install target] Error 126
(Да, режим разработчика на телефоне я включить не забыл и JAVA_HOME в переменных среды прописал )
Телефон HTC One, Система Windows 10 X64,
 использую комплект "Android for armeabi-v7a (GCC 4.9, Qt 5.6.0)"


Название: Re: Помощь для новичков
Отправлено: Геннадий Носов от Апрель 02, 2016, 10:04
Мне удалось запустить прогу на телефон, сделал всё тоже самое, но на другом компе.
Похоже проблема толи в виндус 10 толи в архитектуре x64
Но вопрос всё ещё актуален. Если у кого-то  на Win10 х64 с андроидом всё работает, напишите пожалуйста)

И да, подскажите пожалуйста какие-нибудь источники на тему, как делать в qt программы, которые нормально отображаются на телефоне)


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Апрель 02, 2016, 21:25
какие-нибудь источники

Документация и примеры, поставляемые с qt, имхо, самый лучший источник


Название: Re: Помощь для новичков
Отправлено: ahlamon от Апрель 17, 2017, 14:18
День добрый. Пытаюсь использовать в проекте библиотеку картографии marble. Саму библиотеку собрал, marble-qt и примеры запускаются. Создаю проект, подключаю библиотеки libmarblewidget-qt5.dll и libastro.dll(после make install лежат в C:\Program Files (x86)\marble), указываю пути к заголовочникам из проекта marble в pro файле. В итоге как только пытаюсь запустить простейшую программу уже после создания объекта класса MarbleWidget "программа неожиданно завершается". В режиме отладки тоже не запускается During startup program exited with code 0xc0000135.
За ранее спасибо за любую помощь

ЗЫ В режиме отдалки пишет QWidget: Must construct a QApplication before a QWidget
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
В режиме релиза просто неожиданное завершение. Код простой из примера

#include <QApplication>

#include <marble/MarbleWidget.h>

using namespace Marble;

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

    // Create a Marble QWidget without a parent
    MarbleWidget *mapWidget = new MarbleWidget();

    // Load the OpenStreetMap map
    mapWidget->setMapThemeId(QStringLiteral("earth/openstreetmap/openstreetmap.dgml"));

    mapWidget->show();

    return app.exec();
}


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Апрель 17, 2017, 16:35
Я бы для начала попробовал бы положить библиотеку в директорию, путь к которой не содержит пробелы


Название: Re: Помощь для новичков
Отправлено: ahlamon от Апрель 17, 2017, 17:13
Я бы для начала попробовал бы положить библиотеку в директорию, путь к которой не содержит пробелы
Попробовал. Ничего не поменялось. Зато заметил другую закономерность. Если dll файлы закинуть в папку куда происходит билд программы то
QWidget: Must construct a QApplication before a QWidget
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Если этих файлов нет в той папке то просто неожиданное завершение
Если запустить отладчик то программа падает на создании объекта marbleWidget


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Апрель 17, 2017, 17:23
Кажется, подобная ошибка может возникать и в случае, если к релиз сборке подключать дебаг либу и наоборот.


Название: Re: Помощь для новичков
Отправлено: ahlamon от Апрель 17, 2017, 17:41
Кажется, подобная ошибка может возникать и в случае, если к релиз сборке подключать дебаг либу и наоборот.

Спасибо. Вы оказались правы. Я про этот случай читал, но не додумался закинуть библиотеки dll в папку с билдом релиза.(библиотеку собрал релиз) В билд дебага кидал. Еще раз спасибо.


Название: Re: Помощь для новичков
Отправлено: Анатолий от Май 16, 2017, 00:42
Может найдутся люди который подскажут как решить проблему.
Нужно запустить код ниже
Ошибка: import does not name a type
Версия QT Crearot 3.6
Может я что-то не верно запускаю, если кто может, напишите полное описание запуска самого проекта, файлы проекта можно посмотреть https://github.com/RPG-18/yang (https://github.com/RPG-18/yang)

Код Японского кросворда:

Код:
import QtQuick 2.5
import Qt.labs.controls 1.0

Item {
    clip:true
    property int margin: 20
    property int fontSize:  12
    property int ceilSize:  20;
    property int incCeilSize: ceilSize + 1
    property color borderColor: "#424242"

    property int rows:       0;
    property int rowSize:    0;

    property int column:     0;
    property int columnSize: 0;

    implicitHeight : crossGrid.height+margin*2
    implicitWidth : crossGrid.width+margin*2

    function loadFromNonogramsOrg(url) {
        console.log("Load:"+url);
        crossword.formNanogramsOrg(url);
    }

    function showOnlyNaturalNumber(val)
    {
        return val > 0 ? val: " ";
    }

    function drawCrossword(){
        var csize = crossword.size;
        if(csize.column() === 0 || csize.rows() === 0){
            return;
        }
        console.log(csize.column() + "x" + csize.rows());
        hRepeater.model = 0;
        rRepeater.model = 0;

        rowSize = crossword.rowSize();
        columnSize = crossword.columnSize();

        rows = csize.rows();
        column = csize.column();

        hRepeater.model = crossword.columnSize()*csize.column();
        rRepeater.model = crossword.rowSize()*csize.rows();
        bgImg.visible = true;
    }

    Image{
        id: bgImg
        asynchronous: true
        visible: false
        height: parent.height
        width: parent.width
        source:"qrc:/wall-paper.jpg"
    }

    Grid {
        id: crossGrid
        anchors.centerIn: parent
        columns: 2
        spacing: 2
        rowSpacing: 0
        columnSpacing: 0

        Rectangle{
            id:topLeftItm
            width: rowSize * ceilSize
            height:columnSize * ceilSize
            border.width: 1
            border.color: borderColor
            color: "transparent"
        }

        Grid {
            id: cGrid
            rows: columnSize
            columns: column

            Repeater {
                id: hRepeater
                model: 0
                Item {
                    width: ceilSize; height: ceilSize
                    property int rw : Math.floor(index/column)
                    property int cn : Math.floor(index%column)
                    property int prw: rw+1
                    property int pcm: cn+1

                    Rectangle{
                        height: (prw % 5 == 0) || (prw == columnSize) ? ceilSize : incCeilSize
                        width:  (pcm % 5 == 0)  ? ceilSize : incCeilSize
                        color: "transparent"
                        border.width: 1
                        border.color: borderColor

                        Text {
                            anchors.centerIn: parent
                            text:showOnlyNaturalNumber(
                                     crossword.columnValue(cn,rw));
                            font{
                                family: mandarinFont.name
                                pixelSize: fontSize
                            }
                        }

                    }
                }
            }
        }

        Grid {
            id: rGrid
            rows: rows
            columns: rowSize

            Repeater {
                id: rRepeater
                model: 0
                Item {
                    width: ceilSize; height: ceilSize
                    property int rw : Math.floor(index/rowSize)
                    property int cn : Math.floor(index%rowSize)
                    property int prw: rw+1
                    property int pcn: cn+1

                    Rectangle{
                        height: prw % 5 == 0 ? ceilSize : incCeilSize
                        width:  (pcn % 5 == 0) || (pcn == rowSize)
                                ? ceilSize : incCeilSize
                        color: "transparent"
                        border.width: 1
                        border.color: borderColor

                        Text {
                            anchors.centerIn: parent
                            text:showOnlyNaturalNumber(
                                     crossword.rowValue(rw,cn));
                            font{
                                family: mandarinFont.name
                                pixelSize: fontSize
                            }
                        }
                    }
                }
            }
        }

        Rectangle{
            id: playingField
            width: column * ceilSize
            height:rows   * ceilSize
            border.width: 1
            border.color: borderColor
            color: "transparent"

            Grid{
                rows: rows
                columns:column
                Repeater {
                    id: bRepeater
                    model: rows * column
                    Item {
                        id: ceilItm
                        width: ceilSize; height: ceilSize
                        property int rw : Math.floor(index/column)
                        property int cn : Math.floor(index%column)
                        state: "default"

                        Rectangle{
                            id: itmRec
                            height: (rw+1) % 5 == 0 ? ceilSize : incCeilSize
                            width: (cn+1) % 5 == 0  ? ceilSize : incCeilSize
                            color: "transparent"
                            border.width: 1
                            border.color: borderColor
                        }

                        Text{
                            id: itmTxt
                            visible:false
                            height: parent.height
                            width: parent.width
                            font.pixelSize: ceilSize
                            horizontalAlignment: Text.AlignHCenter
                            verticalAlignment:   Text.AlignVCenter
                            text:"+"
                            rotation:45
                        }

                        MouseArea {
                            anchors.fill: parent
                            onClicked: {
                                if(parent.state == "default"){
                                    parent.state = "SHADED";
                                }else if(parent.state == "SHADED"){
                                    parent.state = "CLEAR";
                                }else{
                                    parent.state = "default";
                                }

                            }
                        }

                        states: [
                            State{
                                name:"SHADED"
                                PropertyChanges {
                                    target: itmRec; color: "black";
                                }
                                PropertyChanges {
                                    target: itmTxt; visible: false;
                                }
                            },
                            State{
                                name:"CLEAR"
                                PropertyChanges {
                                    target: itmRec; color: "transparent";
                                }
                                PropertyChanges {
                                    target: itmTxt; visible: true;
                                }
                            }
                        ]
                    }
                }
            }
        }
    }

    Text{
        visible: bgImg.visible
        anchors{
            right: parent.right
            rightMargin: 10
            bottom: parent.bottom
        }
        text:qsTr("Source: ")+"www.nonograms.ru"

        font{
            family: hanZiFont.name
            pixelSize: 12
        }
    }

    Connections {
        target: crossword
        onLoaded: {
            drawCrossword();
        }
    }
}


Название: Re: Помощь для новичков
Отправлено: kambala от Май 16, 2017, 16:04
из раздела Requirements все выполнено? какая ОС, компилятор?


Название: Re: Помощь для новичков
Отправлено: Snak2013 от Июнь 21, 2017, 15:45
Доброго времени суток, в приложении создаю поток следующим образом:
Код:
        this->_Thread = new QThread(this);
this->_Materials = new MaterialsUpdate(this->_AllFiles, this);
connect(_Materials, SIGNAL(ShowMeassage(QString)), this, SLOT(ShowProgressMessage(QString)));
connect(_Materials, SIGNAL(ShowProgressBar(bool)), this, SLOT(ShowProgressBar(bool)));
connect(_Materials, SIGNAL(UpdateProgressBar(double, double)), this, SLOT(UpdateProgressBar(double, double)));//Прогресбар
connect(_Materials, SIGNAL(MessageSignal(QString)), this, SLOT(ShowErrorMessage(QString)));
connect(_Materials, SIGNAL(OperationComplit()), this, SLOT(DeleteCompasClass()));
connect(this->_Thread, SIGNAL(started()), _Materials, SLOT(UpdateMaterials()));
        connect(this->_Thread, SIGNAL(finished()), this, SLOT(deleteLater()));
_Materials->moveToThread(this->_Thread);
this->_Thread->setPriority(QThread::Priority::LowestPriority);
    this->_Thread->start();

Поток создается и работает без ошибок прогресбар обновляется нормально но форма окна во время выполнения подвисает(Не перетаскивается мышкой по экрану) подскажите пожалуйста можно ли это как то исправить?


Название: Re: Помощь для новичков
Отправлено: Авварон от Июнь 21, 2017, 15:52
Код:
this->_Materials = new MaterialsUpdate(this->_AllFiles, this);

Нельзя передавать парент объекту, который будет жить в другом треде (иначе он не мувнется, у вас ворнингьдолжен быть в консоли об этом)


Название: Re: Помощь для новичков
Отправлено: Snak2013 от Июнь 21, 2017, 15:55
Спасибо поправлю


Название: Re: Помощь для новичков
Отправлено: ijs5 от Июль 13, 2017, 01:45
Здравствуйте, подскажите пожалуйста. Вчера установил Qt Creator, немного поработал в нем(первые шаги, HelloWord и т.п.). Сегодня при запуске  Qt не показывает ИСХОДНИКИ в дереве проекта ( соответственно нет файлов с расширениями .cpp, .h).  При этом файлы в самой папке на ПК присутствуют.
(http://cdn1.savepice.ru/uploads/2017/7/13/0558c676c2847754f4b476b3017225e5-prev.jpg) (http://savepice.ru/full/2017/7/13/0558c676c2847754f4b476b3017225e5-full.jpg.html)


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Июль 13, 2017, 06:55
Кажется, проблема кроется в кириллице в путях. Где расположен файл проекта?


Название: Re: Помощь для новичков
Отправлено: ijs5 от Июль 13, 2017, 18:34
Нашел решение, дело в компиляторе. Почему то, в проектах (настройки) он не был установлен. После его выбора в необходимых графах все стало отображаться, спасибо за помощь.
P.S. проект располагается на D:\QtProjeck


Название: Re: Помощь для новичков
Отправлено: ofi 69 от Сентябрь 05, 2017, 00:51
Прошу помощи, стоит тривиальная задача, казалось бы. Но видимо не для меня...
И так к сути, у меня есть метод public static QString symbolIsFigure(QString input)
Хотелось бы, для начало, проверить является ли первый символ числом. Я так понимаю что строчка кода Char.IsDigit(input[i])  на языке C++, принесет ожидаемый мной результат.

public static string symbolIsFigure(string input){
for (int i = 0; i < input.length(); i++) //Для каждого символа в входной строке
    {
          if (Char.IsDigit(input[i]))
.
.
.

А вот строчка

if (QChar::isDigit(input[i]))

вызывает ошибку,  no matching function for call to QChar::isDigit(QcharRef)

я пробовал различные варианты с приведением строки к символам и т.п. Но у меня ничего не вышло, возможно я слишком уж новичек.

Если можно, то дайте пожалуйста ответ с пояснением.


Название: Re: Помощь для новичков
Отправлено: gil9red от Сентябрь 05, 2017, 01:19
1. Пользуйтесь подсветкой кода (в редакторе кнопка #)
2. Там точно тип string, а не QString? (это сильно разные типы, так что разница имеет значение)
3. isDigit, похоже, ожидает код числа
Код:
bool QChar::isDigit(uint ucs4)
4. Лучше в функцию передавать константную ссылку, чем копию объекта, например поменять описание на:
Код:
static QString symbolIsFigure(const QString& input){

5. А еще до меня дошло что у вас код на c# (public в методе, Char и методы с верхнего регистра), а вы судя по всему на с++/Qt переписываете

А так, QString возвращает элементы через [] (http://doc.qt.io/qt-5/qstring.html#operator-5b-5d-1) и at (http://doc.qt.io/qt-5/qstring.html#at), и в обоих случаях можно получить QChar, у которого есть isDigit (http://doc.qt.io/qt-5/qchar.html#isDigit)

Код
C++ (Qt)
for (int i = 0; i < input.length(); i++) {
   // Or: if (input.at(i).isDigit()) {
   if (input[i].isDigit()) {
       // ...
   }
}


Название: Re: Помощь для новичков
Отправлено: ofi 69 от Сентябрь 07, 2017, 02:48
Спасибо, немного разобрался (заработало).
Появился такой вопрос,  я как понимаю , что то по факту, строкой
Код:
input[i] 
создается объект класса QChar. Если так, то логично что через "." мы вызываем функцию isDigit, свойственный всем объектам этого класса. Но почему тогда Creator не ругается на строку когда я пытаюсь обратиться через имя класса, как будто бы к статической функции
Код:
QChar::isDigit(input[i])
, мало того, если не передать не какой аргумент то он говорит что параметр функции ожидает аргумент.


Название: Re: Помощь для новичков
Отправлено: gil9red от Сентябрь 07, 2017, 07:44
...
Но почему тогда Creator не ругается на строку когда я пытаюсь обратиться через имя класса, как будто бы к статической функции
Код:
QChar::isDigit(input[i])
, мало того, если не передать не какой аргумент то он говорит что параметр функции ожидает аргумент.

Потому-что, у QChar (http://doc.qt.io/qt-5/QChar.html) есть обыкновенный метод без аргумента (http://doc.qt.io/qt-5/qchar.html#isDigit) и статичный метод с аргументом (http://doc.qt.io/qt-5/qchar.html#isDigit-1)

Пользуйтесь документацией, у Qt она очень клевая!


Название: Re: Помощь для новичков
Отправлено: ofi 69 от Сентябрь 08, 2017, 06:03
Извините, моя ошибка. Дело в том что я очень стараюсь пользоваться документацией, но иногда не все понимаю что там написано. Или как в данном случае, в связи с неопытностью увидев один метод, почему то решил, что статического метода с таким же именем не может быть.
Тогда основываясь на написанном тут (http://doc.qt.io/qt-5/qchar.html#isDigit-1) я делаю вывод, что если, строка передаваемая мной в качестве параметра, будет в UCS-4, то статический метод
Код:
QChar::isDigit(input[i])
будет работать.
Пытался это реализовать, но не одним (http://doc.qt.io/qt-5/qstring.html#toWCharArray) из (http://doc.qt.io/qt-5/qstring.html#fromUcs4) методов, у меня почему то не получилось преобразовать. Или же дело заключается в том, что UCS-4 платформозависим, и будет работать только с Unix?


Название: Re: Помощь для новичков
Отправлено: gil9red от Сентябрь 08, 2017, 11:31
Извините, моя ошибка. Дело в том что я очень стараюсь пользоваться документацией, но иногда не все понимаю что там написано. Или как в данном случае, в связи с неопытностью увидев один метод, почему то решил, что статического метода с таким же именем не может быть.
Тогда основываясь на написанном тут (http://doc.qt.io/qt-5/qchar.html#isDigit-1) я делаю вывод, что если, строка передаваемая мной в качестве параметра, будет в UCS-4, то статический метод
Код:
QChar::isDigit(input[i])
будет работать.
Пытался это реализовать, но не одним (http://doc.qt.io/qt-5/qstring.html#toWCharArray) из (http://doc.qt.io/qt-5/qstring.html#fromUcs4) методов, у меня почему то не получилось преобразовать. Или же дело заключается в том, что UCS-4 платформозависим, и будет работать только с Unix?

Если есть вопросы, то лучше код прикладывать -- так всегда проще :) Но не весь код, а только тот, что воспроизводит проблему


Название: Re: Помощь для новичков
Отправлено: kemosab от Октябрь 18, 2017, 00:19
Не хотелось создавать отдельную тему для такого вопроса, так что здесь :)

Есть кучка объектов QFrame, нужно при нажатии (например на Frame1) чтобы появлялось контекстное(всплывающее?) меню с палитрой цветов (несколько цветов, что я задам). Можно текстом, можно просто цветной строкой. Так вот не нашел каким образом это сделать.
По реализации похоже на setMenu у pushbutton например, но у Qframe нет такого. Что можно сделать?


Название: Re: Помощь для новичков
Отправлено: MrDron от Октябрь 18, 2017, 10:45
Не хотелось создавать отдельную тему для такого вопроса, так что здесь :)

Есть кучка объектов QFrame, нужно при нажатии (например на Frame1) чтобы появлялось контекстное(всплывающее?) меню с палитрой цветов (несколько цветов, что я задам). Можно текстом, можно просто цветной строкой. Так вот не нашел каким образом это сделать.
По реализации похоже на setMenu у pushbutton например, но у Qframe нет такого. Что можно сделать?

Код
C++ (Qt)
frame->installEventFilter(this);
 
bool Widget::eventFilter(QObject *object, QEvent *event) {
   if (object == frame && event->type() == QEvent::MouseButtonPress) {
       menu->popup(QCursor::pos());
   }
   return QObject::eventFilter(object, event);
}


Название: Re: Помощь для новичков
Отправлено: Yagoz от Март 06, 2018, 20:24
Рабочего решения в сети не нашел
Можно ли выводить текст в SetToolTip построчно?


Название: Re: Помощь для новичков
Отправлено: Apktyc от Март 07, 2018, 00:20
Рабочего решения в сети не нашел
Можно ли выводить текст в SetToolTip построчно?

Оно? https://forum.qt.io/topic/84230/line-breaks-in-tooltip-text/14


Название: Re: Помощь для новичков
Отправлено: Yagoz от Март 09, 2018, 13:46
Можно ли выводить текст в SetToolTip построчно?

Оно? https://forum.qt.io/topic/84230/line-breaks-in-tooltip-text/14

Оно, но в моем случае в подсказку надо выводить переменные типа int. Метод QString::number не подходит


Название: Re: Помощь для новичков
Отправлено: kambala от Март 09, 2018, 20:09
так а в чем конкретно проблема?


Название: Re: Помощь для новичков
Отправлено: Zusykss от Апрель 19, 2018, 07:43
Добрый день ;D

Можете меня добавить в конференцию ?
мой логин : kumongo@jabbim.com


Название: Re: Помощь для новичков
Отправлено: SUser от Июль 26, 2018, 07:25
Здравствуйте!
Надеюсь кто-нибудь сможет помочь и тапками не закидаете.
Использую QT с проектом без QT на с++  ;D

1) Проблема с кириллицей.
Стандартный способ в main с setlocale (LC_ALL, "russian"); или 0, "rus" не срабатывает и в консоль все равно выводятся иероглифы (вместо "Привет мир!" Выводится: "Р?С?РёР?РчС' Р?РёС?!").
Пробовал преобразование в ANSI или 1251 через not++ не помогает. Хотел на коленке быстро собрать простой код, но не тут то было. Может кто-нибудь подсказать, как решить эту проблему кроме использования транслита?

2) Добавление компилятора студии MVS.
Использовал компилятор MinGW 5.3.0 for C++. Не стал при установке QT ставить дополнительно компилятор MVS, думаю мб с ним проблема бы решилась (и появилось куча новых   :D).
Вопрос: можно-ли автоматически добавить его в QT? Чтобы он со своего источника скачал или где взять оффлайн версии официальные? На сайте кроме онлайновых загрузчиков самой программы найти не удалось.

Благодарю!


Название: Re: Помощь для новичков
Отправлено: ssoft от Июль 26, 2018, 07:40
Возможно, стоит заменить кодировку файла исходников на cp1251 или dos866.


Название: Re: Помощь для новичков
Отправлено: sergek от Июль 26, 2018, 10:47
Чтобы раз и навсегда закрыть проблему с кракозябрами используйте  в своих Qt проектах исходники в кодировке UTF-8. Если в программе используются внешние данные в другой кодировке, то иногда необходима перекодировка. Чтобы понять принцип работы кодека, мне в свое время помогло это объяснение: http://www.sql.ru/forum/867419/qt-kak-polzovatsya-qtextcodec-dlya-bulochnikov-i-chaynikov (http://www.sql.ru/forum/867419/qt-kak-polzovatsya-qtextcodec-dlya-bulochnikov-i-chaynikov)


Название: Re: Помощь для новичков
Отправлено: Gena00X от Декабрь 22, 2018, 01:38
Здравствуйте.
У меня возникла такая проблема:
Я хочу считать файл с данными по 3d модели: координаты точек поверхности (порядка 500 тысяч точек) + номера точек входящих в полигон (порядка миллиона полигонов, по три точки на каждый).
Создаю объект типа myPoint объект типа myPoligon. Читаю файл с координатами точек (он нормально считывается, точки рисуются в openGL), создаю QList<myPoint> и пишу точки туда, читаю файл с номерами точек для полигонов (он тоже нормально считывается). Потом начинаю создавать полигоны, алгоритм такой:
берём первые три числа из файла с номерами точек для полигонов, ищем в массиве точки с соответствующими номерами, создаём new myPoligon(pt1, pt2, pt3) и пишем его в QList<myPoligon>
Эта система прекрасно работала с маленькими модельками (2-3 тысячи точек) но когда я взял реальный файл с указанными выше параметрами, экспортированный из другой программы, программа начала во-первых жутко тормозить (миллион полигонов создаётся чуть ли не сутки), а во вторых вылетать с жалобами на ошибку выделения памяти.
Что тут можно сделать?

Текст программы:
mainwindow.h:
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFile>
#include <QFileDialog>
#include "mypoint.h"
#include "opengl.h"
#include "mypoligon.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();


 OpenGL GL;

    QString pointpath; //путь к файлу с точкам

//QList<myPoint*> MyPointList; //список точек

myPoint getpoint(QString str); //функция преобразования строки в точку.
myPoint *pt; //глобально объявленная ссылка на объект точки.
myPoligon *poligon;//глобально объявленная ссылка на объект полигона.

int NN = -1;
private slots:
    void on_pathButton_clicked();

    void on_readButton_clicked();

    void on_getPoints_clicked();

    void on_MyPointsOutput_clicked();



    void on_OpenGL_clicked();

    void on_GetTriIndexes_clicked();



    void on_newPoligon_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp:
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mypoint.h"
#include "opengl.h"
#include <opengl.h>
#include "mypoligon.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    pointpath = ui->lineEdit->text();
    GL.vertexRedy = false;
    GL.poligonRedy = false;


}

MainWindow::~MainWindow()
{
    delete ui;

}





void MainWindow::on_pathButton_clicked()
{
    //получение пути к файлу из QFileDialog
    pointpath = QFileDialog::getOpenFileName(this);
     ui->lineEdit->setText(pointpath);

     ui->textEdit->append("file path get complite");
}




void MainWindow::on_readButton_clicked()
{
    //открытие файла и чтение (работает)
    QFile file(pointpath);
    if(file.open(QIODevice::ReadOnly)){


    }
    ui->textEdit->append("file open complite");
}



void MainWindow::on_getPoints_clicked()
{int i;
    QFile file(pointpath);
    if(file.open(QIODevice::ReadOnly)){
while(!file.atEnd()){
pt = new myPoint;
QString str = file.readLine();
if(i > NN){
pt->getPoint(str);
GL.MyPointList.push_back(pt);

if(pt->color>GL.colorMax) GL.colorMax = pt->color;
i=0;}
i++;
}
ui->textEdit->append("pointList: "+QString::number(GL.MyPointList.count()));
}
}


void MainWindow::on_MyPointsOutput_clicked()
{

for (int i = 0; i< GL.MyPointList.count();++i){
   ui->textEdit->append(QString::number(GL.MyPointList[i]->returnVector3D().x()) + " " +QString::number(GL.MyPointList[i]->returnVector3D().y()) + " " +QString::number(GL.MyPointList[i]->returnVector3D().z()) + " " +QString::number((float)(GL.MyPointList[i]->returnColor())));
    }
ui->textEdit->append(QString::number(GL.colorMax));
}



void MainWindow::on_OpenGL_clicked()
{

    GL.resize(600,600);

    GL.show();
    GL.updateGL();

}

void MainWindow::on_GetTriIndexes_clicked()
{   QString str = "C:/Users/Геннадий/Desktop/Аспирантура/Программа расчёта ИК-заметности/с полигонами (триугольники) ++/";

    QString str2 = "треугольники";
    QFileDialog::Options opt;

    QFile trifile(QFileDialog::getOpenFileName(this,str2,str));
    if(trifile.open(QIODevice::ReadOnly| QIODevice::Text)){
        ui->textEdit->append("trifile open");
    }
    QList<QString> sList;
    while(!trifile.atEnd()){
        sList.push_back((trifile.readLine()));
    }

    ui->textEdit->append("sList created"+QString::number(sList.count()));

    QList<QString>::iterator ii;
    for(ii=sList.begin(); ii != sList.end(); ++ii){
        GL.vertexIndexes.push_back((*ii).section(',',0,0).toFloat());
        GL.vertexIndexes.push_back((*ii).section(',',1,1).toFloat());
        GL.vertexIndexes.push_back((*ii).section(',',2,2).toFloat());
    }
ui->textEdit->append("vertexIndexes: "+QString::number(GL.vertexIndexes.count()));
    QList<float>::iterator ff;
    int i;
    i=1;
    ui->textEdit->append("print vertexIndexes");
    for(ff=GL.vertexIndexes.begin(); ff != GL.vertexIndexes.end(); ff++){
        ui->textEdit->append(QString::number((*ff))+" "+QString::number(GL.MyPointList[(*ff)]->color));
        i++;
    }
    ui->textEdit->append("print vertexIndexes complite"+QString::number(GL.vertexIndexes.count()));
    GL.vertexRedy = true;

}

void MainWindow::on_newPoligon_clicked()
{  

    for(int i=0;i<=GL.vertexIndexes.count()-3;i = i+3){

    poligon = new myPoligon((*(GL.MyPointList[GL.vertexIndexes[i]])),(*(GL.MyPointList[GL.vertexIndexes[i+1]])),(*(GL.MyPointList[GL.vertexIndexes[i+2]])));


    GL.MyPoligonList.push_back(poligon);
    qDebug(QString::number(i).toUtf8());

    }

    ui->textEdit->append("создано "+QString::number(GL.MyPoligonList.count())+" полигонов");
    GL.poligonRedy = true;
}

mypoint.h:
Код:
#ifndef MYPOINT_H
#define MYPOINT_H

#include <QWidget>
#include <QGLWidget>
#include <QVector3D>

class myPoint : public QWidget
{

Q_OBJECT

private:




public:
    QVector3D point;
    myPoint(QWidget *parent = 0);
    myPoint(const myPoint &other);
    ~myPoint();

     GLfloat color;
     void getPoint(QString str );
     GLfloat returnColor();
     QVector3D returnVector3D();

signals:

public slots:
};

#endif // MYPOINT_H

mypoint.cpp:

#include "mypoint.h"
#include <QWidget>


myPoint::myPoint ( QWidget* parent) : QWidget(parent)
{

}

myPoint::myPoint (const myPoint &other ) : QWidget( )
{
point = other.point;
color = other.color;
}

myPoint::~myPoint()
{

}



void myPoint::getPoint(QString str)
{
    point = QVector3D(str.section(";",0,0).toFloat(),str.section(";",1,1).toFloat(),str.section(";",2,2).toFloat());
    color = (GLfloat)str.section(";",3,3).toFloat();
}

GLfloat myPoint::returnColor()
{
    return color;
}







QVector3D myPoint::returnVector3D()
{
    return point;
}
mypoligon.h:
Код:
#ifndef MYPOLIGON_H
#define MYPOLIGON_H


#include <QWidget>
#include <QGLWidget>
#include <QVector3D>
#include "mypoint.h"


class myPoligon : public QWidget
{

Q_OBJECT

private:




public:
    myPoint point1, point2, point3;
    myPoligon(QWidget *parent = 0);
    myPoligon(const myPoligon &other);
    myPoligon(myPoint pt1, myPoint pt2, myPoint pt3);
    ~myPoligon();

    float S();
    float SS; //площадь полигона

    GLfloat color;
    GLfloat getColor();

    QVector3D center;
    QVector3D normal;

signals:

public slots:
};

#endif //MYPOLIGON_H

mypoligon.cpp:

#include "mypoligon.h"
#include <QWidget>
#include "mypoint.h"


myPoligon::myPoligon( QWidget* parent) : QWidget(parent)
{

}

myPoligon::myPoligon (const myPoligon &other ) : QWidget( )
{

}

myPoligon::myPoligon(myPoint pt1, myPoint pt2 , myPoint pt3)
{
point1.point =  pt1.point;
point2.point =  pt2.point;
point3.point =  pt3.point;
color = (pt1.color + pt2.color + pt3.color)/3.0;
center = QVector3D((pt1.point.x()+pt2.point.x()+pt3.point.x())/3.0,(pt1.point.y()+pt2.point.y()+pt3.point.y())/3.0,(pt1.point.z()+pt2.point.z()+pt3.point.z())/3.0 );
normal = QVector3D::crossProduct(pt1.point-pt3.point,pt3.point-pt2.point);
}

myPoligon::~myPoligon()
{

}

float myPoligon::S()
{
SS=QVector3D().dotProduct(point1.point-point2.point,point1.point-point3.point);
return SS;
}

GLfloat myPoligon::getColor()
{
    return color;
}

opengl.h:
Код:
#ifndef OPENGL_H
#define OPENGL_H
#include <QWidget>
#include <QGLWidget>
#include <QKeyEvent>
#include "mypoint.h"
#include "mypoligon.h"

class OpenGL : public QGLWidget
{
    Q_OBJECT
protected:
   void initializeGL();
   void resizeGL(int nWidth, int nHeight);
   void paintGL();


public:
    OpenGL(QWidget *parent = 0);

void keyPressEvent(QKeyEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);

QPoint pressPosition;
GLfloat xAxisRotation;
GLfloat yAxisRotation;
GLfloat zAxisRotation;
GLfloat currentHeight;
GLfloat currentWidth;
GLfloat zoom;
GLfloat translateX;
GLfloat translateY;
GLfloat colorMax;
QList<float> vertexIndexes; //номера вершин в каждом треугольнике.
bool vertexRedy;
bool poligonRedy;
QList<myPoint*> MyPointList; //список точек
QList<myPoligon*> MyPoligonList;//список полигонов

};

#endif // OPENGL_H
opengl.cpp:
Код:
#include "opengl.h"
#include <QDebug>
#include "mainwindow.h"

OpenGL::OpenGL(QWidget* parent) : QGLWidget(parent)
{

}


void OpenGL::initializeGL()
{
    glClearColor(0.5, 0.5, 0.5, 0.5);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_COLOR_ARRAY);
    //glShadeModel(GL_FLAT); //отключает плавные переходы цветов
   glEnable(GL_CULL_FACE); //если включено - задние грани не видны
     zoom = 1.0;


}
void OpenGL::resizeGL(int nWidth, int nHeight)
{
    glMatrixMode(GL_PROJECTION);
    if(nWidth < nHeight){
    nWidth = nHeight;
    }
    else
    {
      nHeight = nWidth;
    }
    glLoadIdentity();

    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);

    glViewport(0, 0, (GLint)nWidth, (GLint)nHeight);

    currentHeight =(GLint)nWidth;
    currentWidth =(GLint)nHeight;


}
void OpenGL::paintGL()
{
    glMatrixMode(GL_MODELVIEW); //
                                // глобальная система координат
        glLoadIdentity();       //

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPointSize(15);


    glRotatef(yAxisRotation, 0.0, 1.0, 0.0);
    glRotatef(xAxisRotation, 1.0, 0.0, 0.0);
    glRotatef(zAxisRotation, 0.0, 0.0, 1.0);
    glScalef(zoom, zoom, zoom);
    glTranslatef(translateX,translateY,0);





if(!MyPointList.empty()){
    glBegin(GL_POINTS);
    QList<myPoint*>::iterator pt;
    for(pt = MyPointList.begin(); pt!=MyPointList.end();++pt){

        glColor3f((*pt)->color/colorMax,0,0);
glVertex3f((*pt)->returnVector3D().x(),(*pt)->returnVector3D().y(),(*pt)->returnVector3D().z());
    }
   glEnd();
};




   if(poligonRedy){
       glBegin(GL_TRIANGLES);

       QList<myPoligon * >::iterator pol;
       for(pol = MyPoligonList.begin(); pol != MyPoligonList.end(); ++pol){

           glColor3f((*pol)->getColor()/colorMax,0,0);
           glVertex3f((*pol)->point1.point.x(),(*pol)->point1.point.y(),(*pol)->point1.point.z());

           glVertex3f((*pol)->point2.point.x(),(*pol)->point2.point.y(),(*pol)->point2.point.z());

           glVertex3f((*pol)->point3.point.x(),(*pol)->point3.point.y(),(*pol)->point3.point.z());
       }
        glEnd();
   };


   if(poligonRedy){


       QList<myPoligon * >::iterator pol;

       for(pol = MyPoligonList.begin(); pol != MyPoligonList.end(); ++pol){
glBegin(GL_LINE_STRIP);
glLineWidth(1);
           glColor3f(1,1,1);
           glVertex3f((*pol)->center.x(),(*pol)->center.y(),(*pol)->center.z());
           glVertex3f((*pol)->normal.x()+(*pol)->center.x(),(*pol)->normal.y()+(*pol)->center.y(),(*pol)->normal.z()+(*pol)->center.z());
glEnd();
       }

   };





}//Close PaintGL




void OpenGL::mousePressEvent(QMouseEvent *event)
{
    pressPosition = event->pos();


}

void OpenGL::mouseMoveEvent(QMouseEvent *event)
{



    xAxisRotation += (180 * ((GLfloat)event->y() - (GLfloat)pressPosition.y())) / (currentHeight);
    yAxisRotation += (180 * ((GLfloat)event->x() - (GLfloat)pressPosition.x())) / (currentWidth);

    pressPosition = event->pos();


    updateGL();
}



void OpenGL::keyPressEvent(QKeyEvent *event)
{
     if(event->key()==Qt::Key_PageUp){
        zoom += 0.01;

        updateGL();
    }
    else if(event->key()==Qt::Key_PageDown){
        zoom -= 0.01;

        updateGL();
    }
    else if(event->key()==Qt::Key_Enter){

         xAxisRotation = 0.0;
         yAxisRotation = 0.0;
        updateGL();
    }
    else if(event->key()==Qt::Key_Right){
        translateX += 0.1;
        updateGL();
    }
    else if(event->key()==Qt::Key_Left) {
        translateX -= 0.1;
        updateGL();
    }
    else if(event->key()==Qt::Key_Up) {
        translateY += 0.1;
        updateGL();
    }
    else if(event->key()==Qt::Key_Down) {
        translateY -= 0.1;
        updateGL();
    }
     else if(event->key()==Qt::Key_Q){

zAxisRotation += 0.1;
updateGL();
     }
}

сам проект: https://yadi.sk/d/a7X69v_7aoZ9nw


Название: Re: Помощь для новичков
Отправлено: Igors от Декабрь 22, 2018, 11:05
1) Вертексы и полигоны (в общем случае фейсы) - это сырые, "рудиментарные" данные число которых может быть огромно. Поэтому для их хранения нужно использовать контейнеры с минимальными накладными расходами, такие как QVector или std::vector (а не QList). Только это сократит расход памяти уже вдвое.

2) По тем же причинам делать Polygon наследником жирного QObject - грубая ошибка.

3) Переписывать вертексы в полигон - плохо не только из-за перерасхода памяти в неск раз, но и по многим др причинам (подробности опускаем). Полигон хранит индексы вертексов, пусть это делает его методы чуть менее удобными - не беда.

4) Пользуйтесь тегом для обрамления кода, а если код достаточно велик (как в данном случае), то хорошим тоном считается выложить минимальный компилируемый проект в zip'e. A выцарапывать с форума копи/пастой никто не захочет.


Название: Re: Помощь для новичков
Отправлено: Gena00X от Декабрь 22, 2018, 13:57
Спасибо большое!
Кстати, не подскажете, на счёт опущенных вами других причин что можно почитать?
п.с.
Теги поставил, проект добавил.


Название: Re: Помощь для новичков
Отправлено: Igors от Декабрь 22, 2018, 18:31
Кстати, не подскажете, на счёт опущенных вами других причин что можно почитать?
Вот навскидку еще парочка

1) Начинающий обычно находится в счастливом неведении полагая что "вертекс" - это просто "точка" (3d координата) - и все. Это не так. Вертекс практически всегда имеет нормаль (не путать с нормалью к полигону), часто UV (без которых модель неполноценна), а нередко и цвет и/или матрицу(ы) бампа. И это только стандартные данные, а в задаче могут быть (и часто есть) еще и кастомные. Нормальная поверхность имеет "валентность" 5-6 (т.е. один вертекс используется 5-6 полигонами). Поэтому дублирование тонны данных в полигоны становится просто неприемлемо/невыносимо.

2) Многие операции (напр деформации) меняют позицию или другие данные вертексов оставляя "топологию" неизменной. При хранении вертексов в отдельном контейнере проблем нет - просто обсчитываем каждый эл-т контейнера. А вот если храним в полигонах..

Справедливости ради отметим что хранение данных в полигонах все-таки есть (per-face data), пример - популярный obj файл. Но и в этом случае хранятся индексы (а не сами значения).

Короче: полигон хранит индексы, нарушать эту традицию - обычно себе дороже


Название: Re: Помощь для новичков
Отправлено: Gena00X от Декабрь 23, 2018, 14:13
Цитировать
Вот навскидку еще парочка
Спасибо! Но вообще я имею в виду не конкретно этот вопрос, а в целом на счёт работы с 3d в C++ что имеет смысл почитать? Чтоб не плодить в дальнейшем подобные ошибки


Название: Re: Помощь для новичков
Отправлено: Igors от Декабрь 23, 2018, 17:03
Но вообще я имею в виду не конкретно этот вопрос, а в целом на счёт работы с 3d в C++ что имеет смысл почитать? Чтоб не плодить в дальнейшем подобные ошибки
Это просто недостаток программистского опыта, не вижу здесь какой-то связи с 3d.

Что читать.. Ну достаточно создать тему с подобным вопросом - и недостатка в советах "открыть книгу" не будет  :) Правда и эффективность этого "почитать" очень невелика, поэтому я бы посоветовал исходить из решаемых задач. Напр сейчас визуализируете нормали к полигонам, а возможно понадобятся нормали к вертексам. Если так то ими и займитесь, толку будет больше чем что-то читать "вообще".


Название: Re: Помощь для новичков
Отправлено: Zusykss от Декабрь 13, 2019, 19:37
Что-то в последнее время развелось много новичков и однотипных тем. Часть из них уже перекочевала в мои джабберные контакты.  :) В джаббере есть конференция по Qt, но она не для новичков. В общем, я создал конференцию в джаббере: qt-for-beginner@conference.jabber.ru, в которую приглашаю новичков и терпимых к новичкам людей. Сам там буду постоянно торчать и оказывать посильную помощь. Надеюсь, тема не бредовая и кому-нибудь понравится и пригодится.

ЗЫ: А вот несколько ссылок по jabber для тех, кто про него ничего не знает:
Страничка Вики
    http://ru.wikipedia.org/wiki/Jabber (http://ru.wikipedia.org/wiki/Jabber)
Сайт
    http://www.jabber.ru/ (http://www.jabber.ru/)

Вот так можно войти в конференцию в QIP'е (http://wiki.qip.ru/Jabber-%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8)
А вот так в QIP 2010 (http://otvety.google.ru/otvety/thread?tid=36d5493b7a916d91)


Не получилось вас найти пытался через приложение Pidgin


Название: Re: Помощь для новичков
Отправлено: Пантер от Декабрь 13, 2019, 20:19
Jabber уже давно умер. По крайней мере, для меня.


Название: Re: Помощь для новичков
Отправлено: Авварон от Май 06, 2020, 12:28
Предлагаю создать сервер в дискорде=)


Название: Re: Помощь для новичков
Отправлено: kambala от Май 06, 2020, 19:04
почему не слак? больше подходит для написания кода


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 06, 2020, 19:47
Слак денег стоит.


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 06, 2020, 19:52
Создал сервер в Дискорде. Может, реально кому-то будет полезно.
https://discord.gg/AWVVFw9


Название: Re: Помощь для новичков
Отправлено: __Heaven__ от Май 12, 2020, 08:00
Ссылка протухла


Название: Re: Помощь для новичков
Отправлено: Пантер от Май 12, 2020, 08:44
Вот новая ссылка https://discord.gg/AWVVFw9
Я не знал, что она только на день. :) Эта вроде не должна протухать.


Название: Re: Помощь для новичков
Отправлено: savik от Июнь 05, 2020, 14:11
Ой щас меня бить будут, наверное.
(https://drive.google.com/file/d/1XBkz9TNNsWXy5v-eszZfPe4IRlZLLxut/view?usp=sharing) https://drive.google.com/file/d/1XBkz9TNNsWXy5v-eszZfPe4IRlZLLxut/view?usp=sharing (https://drive.google.com/file/d/1XBkz9TNNsWXy5v-eszZfPe4IRlZLLxut/view?usp=sharing)
Ругается qtcreator на openssl. Что туда прописывать?


Название: Re: Помощь для новичков
Отправлено: olegivanov от Май 04, 2021, 17:15
.


Название: Re: Помощь для новичков
Отправлено: Владимир от Октябрь 05, 2022, 10:11
Есть кнопка "Ответ". А я вопрос задать хочу. Как это сделать????


Название: Re: Помощь для новичков
Отправлено: tux от Октябрь 05, 2022, 20:42
Есть кнопка "Ответ". А я вопрос задать хочу. Как это сделать????
Можно просто создать тему в соответствующем разделе.