Russian Qt Forum
Март 29, 2024, 11:40
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Помощь для новичков
Страниц:
1
...
8
9
[
10
]
11
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Помощь для новичков (Прочитано 118909 раз)
SUser
Гость
Re: Помощь для новичков
«
Ответ #135 :
Июль 26, 2018, 07:25 »
Здравствуйте!
Надеюсь кто-нибудь сможет помочь и тапками не закидаете.
Использую QT с проектом без QT на с++
1) Проблема с кириллицей.
Стандартный способ в
main
с
setlocale (LC_ALL, "russian");
или
0, "rus"
не срабатывает и в консоль все равно выводятся иероглифы (вместо "
Привет мир!
" Выводится: "
Р?С?РёР?РчС' Р?РёС?!
").
Пробовал преобразование в ANSI или 1251 через not++ не помогает. Хотел на коленке быстро собрать простой код, но не тут то было. Может кто-нибудь подсказать, как решить эту проблему кроме использования транслита?
2) Добавление компилятора студии MVS.
Использовал компилятор MinGW 5.3.0 for C++. Не стал при установке QT ставить дополнительно компилятор MVS, думаю мб с ним проблема бы решилась (и появилось куча новых
).
Вопрос: можно-ли автоматически добавить его в QT? Чтобы он со своего источника скачал или где взять оффлайн версии официальные? На сайте кроме онлайновых загрузчиков самой программы найти не удалось.
Благодарю!
Записан
ssoft
Программист
Offline
Сообщений: 574
Re: Помощь для новичков
«
Ответ #136 :
Июль 26, 2018, 07:40 »
Возможно, стоит заменить кодировку файла исходников на cp1251 или dos866.
Записан
sergek
Гипер активный житель
Offline
Сообщений: 861
Мы должны приносить пользу людям.
Re: Помощь для новичков
«
Ответ #137 :
Июль 26, 2018, 10:47 »
Чтобы раз и навсегда закрыть проблему с кракозябрами используйте в своих Qt проектах исходники в кодировке UTF-8. Если в программе используются внешние данные в другой кодировке, то иногда необходима перекодировка. Чтобы понять принцип работы кодека, мне в свое время помогло это объяснение:
http://www.sql.ru/forum/867419/qt-kak-polzovatsya-qtextcodec-dlya-bulochnikov-i-chaynikov
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Gena00X
Гость
Re: Помощь для новичков
«
Ответ #138 :
Декабрь 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
«
Последнее редактирование: Декабрь 22, 2018, 13:52 от Gena00X
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Помощь для новичков
«
Ответ #139 :
Декабрь 22, 2018, 11:05 »
1) Вертексы и полигоны (в общем случае фейсы) - это сырые, "рудиментарные" данные число которых может быть огромно. Поэтому для их хранения нужно использовать контейнеры с минимальными накладными расходами, такие как QVector или std::vector (а не QList). Только это сократит расход памяти уже вдвое.
2) По тем же причинам делать Polygon наследником жирного QObject - грубая ошибка.
3) Переписывать вертексы в полигон - плохо не только из-за перерасхода памяти в неск раз, но и по многим др причинам (подробности опускаем). Полигон хранит индексы вертексов, пусть это делает его методы чуть менее удобными - не беда.
4) Пользуйтесь тегом для обрамления кода, а если код достаточно велик (как в данном случае), то хорошим тоном считается выложить минимальный компилируемый проект в zip'e. A выцарапывать с форума копи/пастой никто не захочет.
Записан
Gena00X
Гость
Re: Помощь для новичков
«
Ответ #140 :
Декабрь 22, 2018, 13:57 »
Спасибо большое!
Кстати, не подскажете, на счёт опущенных вами других причин что можно почитать?
п.с.
Теги поставил, проект добавил.
«
Последнее редактирование: Декабрь 22, 2018, 16:13 от Gena00X
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Помощь для новичков
«
Ответ #141 :
Декабрь 22, 2018, 18:31 »
Цитата: Gena00X от Декабрь 22, 2018, 13:57
Кстати, не подскажете, на счёт опущенных вами других причин что можно почитать?
Вот навскидку еще парочка
1) Начинающий обычно находится в счастливом неведении полагая что "вертекс" - это просто "точка" (3d координата) - и все. Это не так. Вертекс практически всегда имеет нормаль (не путать с нормалью к полигону), часто UV (без которых модель неполноценна), а нередко и цвет и/или матрицу(ы) бампа. И это только стандартные данные, а в задаче могут быть (и часто есть) еще и кастомные. Нормальная поверхность имеет "валентность" 5-6 (т.е. один вертекс используется 5-6 полигонами). Поэтому дублирование тонны данных в полигоны становится просто неприемлемо/невыносимо.
2) Многие операции (напр деформации) меняют позицию или другие данные вертексов оставляя "топологию" неизменной. При хранении вертексов в отдельном контейнере проблем нет - просто обсчитываем каждый эл-т контейнера. А вот если храним в полигонах..
Справедливости ради отметим что хранение данных в полигонах все-таки есть (per-face data), пример - популярный obj файл. Но и в этом случае хранятся
индексы
(а не сами значения).
Короче: полигон хранит индексы, нарушать эту традицию - обычно себе дороже
Записан
Gena00X
Гость
Re: Помощь для новичков
«
Ответ #142 :
Декабрь 23, 2018, 14:13 »
Цитировать
Вот навскидку еще парочка
Спасибо! Но вообще я имею в виду не конкретно этот вопрос, а в целом на счёт работы с 3d в C++ что имеет смысл почитать? Чтоб не плодить в дальнейшем подобные ошибки
«
Последнее редактирование: Декабрь 23, 2018, 14:14 от Gena00X
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Помощь для новичков
«
Ответ #143 :
Декабрь 23, 2018, 17:03 »
Цитата: Gena00X от Декабрь 23, 2018, 14:13
Но вообще я имею в виду не конкретно этот вопрос, а в целом на счёт работы с 3d в C++ что имеет смысл почитать? Чтоб не плодить в дальнейшем подобные ошибки
Это просто недостаток программистского опыта, не вижу здесь какой-то связи с 3d.
Что читать.. Ну достаточно создать тему с подобным вопросом - и недостатка в советах "открыть книгу" не будет
Правда и эффективность этого "почитать" очень невелика, поэтому я бы посоветовал исходить из решаемых задач. Напр сейчас визуализируете нормали к полигонам, а возможно понадобятся нормали к вертексам. Если так то ими и займитесь, толку будет больше чем что-то читать "вообще".
Записан
Zusykss
Гость
Re: Помощь для новичков
«
Ответ #144 :
Декабрь 13, 2019, 19:37 »
Цитата: Пантер от Май 12, 2011, 09:43
Что-то в последнее время развелось много новичков и однотипных тем. Часть из них уже перекочевала в мои джабберные контакты.
В джаббере есть конференция по Qt, но она не для новичков. В общем, я создал конференцию в джаббере:
qt-for-beginner@conference.jabber.ru
, в которую приглашаю новичков и терпимых к новичкам людей. Сам там буду постоянно торчать и оказывать посильную помощь. Надеюсь, тема не бредовая и кому-нибудь понравится и пригодится.
ЗЫ: А вот несколько ссылок по jabber для тех, кто про него ничего не знает:
Страничка Вики
http://ru.wikipedia.org/wiki/Jabber
Сайт
http://www.jabber.ru/
Вот так можно войти в конференцию в QIP'е
А вот так в QIP 2010
Не получилось вас найти пытался через приложение Pidgin
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Помощь для новичков
«
Ответ #145 :
Декабрь 13, 2019, 20:19 »
Jabber уже давно умер. По крайней мере, для меня.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3257
Re: Помощь для новичков
«
Ответ #146 :
Май 06, 2020, 12:28 »
Предлагаю создать сервер в дискорде=)
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4724
Re: Помощь для новичков
«
Ответ #147 :
Май 06, 2020, 19:04 »
почему не слак? больше подходит для написания кода
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Помощь для новичков
«
Ответ #148 :
Май 06, 2020, 19:47 »
Слак денег стоит.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Помощь для новичков
«
Ответ #149 :
Май 06, 2020, 19:52 »
Создал сервер в Дискорде. Может, реально кому-то будет полезно.
https://discord.gg/AWVVFw9
«
Последнее редактирование: Май 12, 2020, 08:43 от Пантер
»
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц:
1
...
8
9
[
10
]
11
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...