2026
|
Qt / 2D и 3D графика / Re: Widgets on top of QGLWidget
|
: Июль 16, 2014, 12:08
|
И цель ставить более четко/практично: рисовать поверх можно, ну не будем делать QGLWidget окном (это и не нужно).
Согласен. Это было просто желание разобраться, так сказать, для себя. На деле я уже реализовал всё, что мне нужно было. Спасибо.
|
|
|
2027
|
Qt / 2D и 3D графика / Re: Widgets on top of QGLWidget
|
: Июль 16, 2014, 10:43
|
Установите для QGLWidget C++ (Qt) setAttribute(Qt::WA_PaintOnScreen, false);
Вообще может для Вас есть смысл использовать "OpenGL сборку" Qt (сам не пробовал) Приведенный Вами код вызывает ошибку Sigmentation fault при исполнении строки return app.exec(); Я использую именно OpenGL сборку.
|
|
|
2028
|
Qt / 2D и 3D графика / Re: Widgets on top of QGLWidget
|
: Июль 15, 2014, 21:33
|
Снова словил прорисовку прямоугольника вместо кнопки... Причина ясна, хочется понять почему... Вот рабочий код, при котором всё происходит так как ожидается: #include <QtWidgets> #include <QGLWidget> #include <QHBoxLayout>
class MyWidget : public QGLWidget { public: MyWidget( QWidget * parent = 0 ) : QGLWidget(parent) { QHBoxLayout* lay = new QHBoxLayout(this); QPushButton * btn = new QPushButton("Button", this); lay->addWidget(btn); }
void paintGL( void ) { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); } };
int main( int argc, char **argv ) { QApplication app(argc, argv);
QDialog * dlg = new QDialog; dlg->setGeometry(100, 100, 400, 400); MyWidget * mw = new MyWidget(dlg); QHBoxLayout lay; lay.addWidget(mw); dlg->setLayout(&lay);
dlg->show();
return app.exec(); }
Но стоит мне вывести QGLWidget отдельным окном, как проявляется этот эффект: int main( int argc, char **argv ) { QApplication app(argc, argv);
QDialog * dlg = new QDialog; dlg->setGeometry(100, 100, 400, 400); MyWidget * mw = new MyWidget(0); // QHBoxLayout lay; // lay.addWidget(mw); // dlg->setLayout(&lay);
mw->show();
return app.exec(); } Почему так происходит?
|
|
|
2029
|
Qt / 2D и 3D графика / Re: Widgets on top of QGLWidget
|
: Июль 15, 2014, 21:15
|
Спасибо. Я пытался создавать кнопку в конструкторе класса, назначая родителем сам класс... Видимо, так делать нельзя. Igors, я заметил, что в Вашем примере имеется черная рамка вокруг кнопки. Можно ли добиться "гладкости" и "плавности" интерфейса как в современных CAD/CAE системах? (Например как в SolidWorks, написанном на .NET, см. аттач. Дерево, кнопочки в окне рисования...)
|
|
|
2030
|
Qt / 2D и 3D графика / Widgets on top of QGLWidget
|
: Июль 15, 2014, 16:53
|
Здравствуйте! Помогите, пожалуйста разобраться, каким образом можно добавить, к примеру, кнопку на QGLWidget.
Я попробовал создать QHBoxLayout, на который добавил QPushButton и QLabel, но получил в итоге два белых прямоугольника...
|
|
|
2032
|
Qt / 2D и 3D графика / Re: QT OpenGL смена движка
|
: Июль 14, 2014, 08:30
|
Хотел бы спросить, правильно ли я понимаю, что сейчас для использования Angle нужно скачивать Qt 5.3.1 for Windows 64-bit (VS 2013, 573 MB), а для OpenGL Qt 5.3.1 for Windows 64-bit (VS 2013, OpenGL, 571 MB)? И как понять, под какой движок компилируется приложение?
|
|
|
2033
|
Программирование / Общий / Re: Ошибка компоновщика
|
: Июль 10, 2014, 23:09
|
Меня удивляло и продолжает удивлять, тот факт, что я написал около 3 примеров с использованием той самой glut32.lib и они компилируются... как такое возможно?
|
|
|
2035
|
Программирование / Общий / Re: Ошибка компоновщика
|
: Июль 10, 2014, 21:08
|
у меня и дебаг и релиз работает. использую Qt 5.3.0 MSVC2012 OpenGL 32bit. похоже, что твоему mingw компилятору что-то не нравится.
Совершенно забыл, что у меня установлен компилятор MSVC2013. Я запустил Ваш код и он работает. Наверное, действительно, под MS лучше использовать MS компилятор...
|
|
|
2036
|
Программирование / Общий / Re: Ошибка компоновщика
|
: Июль 10, 2014, 19:58
|
что мешает взять готовый рабочий проект который я выложил?
Очень извиняюсь!!! Не заметил Вашего сообщения. Попытался сейчас запустить Ваш код и ничего не получил... См. аттач
|
|
|
2037
|
Программирование / Общий / Re: Ошибка компоновщика
|
: Июль 10, 2014, 17:29
|
Igors, меня больше интересует, почему у меня не получается выполнить пример именно в среде Qt Creator (mingw). Это переходит в спортивный интерес, так сказать . Вероятно потому что хедер GLTools.h не очень грамотный. Если ф-ция определена в с файле, то в хедере она должна быть объявлена как extern "C". Попробуйте измененный хедер (аттач) не помогло, к сожалению...
|
|
|
2039
|
Программирование / Общий / Re: Ошибка компоновщика
|
: Июль 09, 2014, 21:17
|
Загрузил Ваш проект в MSVС 2012, добавил glut32.lib в проект, отключил SAFESH в линкере. Положил glut32.dll рядом с exe. Запускается, работает
Предпринимал действия: Запускал предложенный в примере файл проекта MSVC, приписывал расположение glut32 и он работал.
Igors, меня больше интересует, почему у меня не получается выполнить пример именно в среде Qt Creator (mingw). Это переходит в спортивный интерес, так сказать . Морока с путями у вас скорее всего Мне кажется, что нет. До этого момента я выполнил около десятка примеров с использованием glut... А здесь появились эти .c и .h... Я их перенес в папку с моим проектом. Единственное, что меня сейчас интуитивно смущает, следующий код. В файле GLTools.h: #include <windows.h> #include <winnt.h> #include <gl/gl.h>
#include <gl/gl.h>Подключение к проекту с чистым примером QT += opengl не подходит... Возможно ли, что какая-то gl либа не подтягивается?
|
|
|
2040
|
Программирование / Общий / Re: Как правильно внести в проект файлы cpp и h
|
: Июль 09, 2014, 19:45
|
2__Heaven__ Ну причем здесь cpp и h если Вы сами говорите "ошибка компоновщика". Просто тупо ищите все файлы в которых unresolved (gltTransform). Такого lib файла у Вас нет - значит надо его где-то доставать скачивать (а не пробовать компиляторы). Наберите в гугле напр "gltools library download" - вот первая ссылка, товарищ тоже ищет.
Не смог сформулировать тему - переправил. Дело в том, что такая функция определена в .c файле, который имеется в папке common. Я его тоже подтягивал в проект, но это не помогло...
|
|
|
|
|