![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
PVGDRK |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Не могу понять с чего начать....
QT интегрирована в VisualStudio ,,, Выбираю QT Application появляется форма ,,, как на ней что нибудь нарисовать? Круг напрмер или точку? Во вкладке Project есть Add QtModule выбираю там OpenGL Library и ничего не добавляется может я не так все поняла? |
|
|
![]() |
igor_bogomolov |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
почитайте для начала вот это
http://doc.crossplatform.ru/qt/4.6.x/qt4-arthur.html и посмотрите примеры из стандартной поставки Qt |
|
|
PVGDRK |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Буду признательна, если все же поможете понять полному чайнику что и где писать,,,,
Посмотрела примеры из стандартной поставки Qt создала новый проект в VisualStudio -> Qt Console Application Скопировала полностью код из примера,,, все скомпилировалось но при запуске ругается, что не может создать виджет... Может нужно какой то другой проет выбрать не консольный? Мне в конечном итоге нужно изобразить точки, которые можно было бы перемещать мышью и считывать их координаты либо наоборот вводить в какую нибудь таблицу координаты этих точек, а они бы сами распределялись Помогите пожалуйста |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
PVGDRK, но тебе же не консольное приложение нужно.
А насчёт точек - нужно каждую точку описывать в программе как объект, помнить свойства этого объекта (координаты, цвет и тд) |
|
|
PVGDRK |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ткните мне,пожалуйста, какое мне нужно приложение:
QT Application QT Console Application не подходит ActiveQTServer QT4Desiner Plagin QT Library Я все таки предполагаю,что первое, правильно? При создании проекта автоматически создается форма ,,,, не знаю как правильно сказать эта форма описывается классом унаследованным от класса QMainWindow С ней нужно что нибудь делать или так оставить как есть? Потом создать новый класс моей точки наследовать его от классов QPaintDevice и QPaintEngine? |
|
|
Алексей1153 |
![]()
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
PVGDRK, я в креаторе пишу на Qt, как оно выглядит в студии -не знаю. Наверное, QT Application
|
|
|
igor_bogomolov |
![]()
Сообщение
#7
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Мне в конечном итоге нужно изобразить точки, которые можно было бы перемещать мышью и считывать их координаты либо наоборот вводить в какую нибудь таблицу координаты этих точек, а они бы сами распределялись Я бы на вашем месте не мучился и использовал для этих целей графическую сцену. Смотреть в сторону QGraphicsView, QGraphicsScene, QGraphicsItem. При помощи этих компонент вашу задачу решить легче.При создании проекта автоматически создается форма ,,,, не знаю как правильно сказать Это уже вам решать. Как вам проще создавать графический интерфейс в коде или при помощи qtdesigner. Мне больше нравится второй способ (хотя новичкам его обычно не рекомендуюn, и предлагают делать в коде, для более детального изучения qt)
эта форма описывается классом унаследованным от класса QMainWindow С ней нужно что нибудь делать или так оставить как есть? |
|
|
PVGDRK |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо за ответы
![]() А QT Desiner это самостоятельная среда разработки? Я уже всю студию перерыла так и не смогла найти этот Disiner.... QT у меня версия 4.3.1 - может его там нету? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
А QT Desiner это самостоятельная среда разработки? нет, это визуальный редактор пользовательского (графического, визуального) интерфейсаЯ уже всю студию перерыла так и не смогла найти этот Disiner.... QT у меня версия 4.3.1 - может его там нету? в комплекте с Qt он точно есть, смотри кнопку "Пуск" -> "Qt ..."
|
|
|
PVGDRK |
![]()
Сообщение
#10
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Помогите пожалуйста понять почему не выводится рисунок? Хочу нарисовать прямую линию...
и еще почему то никак не поменять размер окна - может еще чего то где то нужно дописать? В QT примере при изменении значений размер окна меняется, а у меня нет Если полностью скопировать QT пример в проект - то все работает, а я хочу понять что где и для чего пишется. Уже весь код примера перерыла но так и не поняла почему у меня ничего не выводится... Файл window.h Раскрывающийся текст #ifndef WINDOW_H #define WINDOW_H #include <QWidget> #include <QPainter> class RenderArea; class Window : public QWidget { Q_OBJECT public: Window(); }; #endif файл window.cpp Раскрывающийся текст #include "window.h" #include <QtGui> #include <math.h> #include "renderarea.h" Window::Window() { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true); painter.drawLine(QPointF(10,10),QPointF(90,90)); // Рисуем линию } файл renderarea.h Раскрывающийся текст #ifndef RENDERAREA_H #define RENDERAREA_H #include <QPainterPath> #include <QWidget> class RenderArea : public QWidget { Q_OBJECT public: RenderArea(const QPainterPath &path, QWidget *parent = 0); QSize minimumSizeHint() const; QSize sizeHint() const; protected: void paintEvent(QPaintEvent *event); private: QPainterPath path; }; #endif файл renderarea.c Раскрывающийся текст #include <QtGui> #include "renderarea.h" RenderArea::RenderArea(const QPainterPath &path, QWidget *parent) : QWidget(parent), path(path) { } QSize RenderArea::minimumSizeHint() const { return QSize(50, 50); } QSize RenderArea::sizeHint() const { return QSize(100, 100); // Почему если поменять значения - размер окна не изменяется? } void RenderArea::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.scale(width() / 100.0, height() / 100.0); painter.translate(50.0, 50.0); } |
|
|
Алексей1153 |
![]()
Сообщение
#11
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Window::Window() { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true); painter.drawLine(QPointF(10,10),QPointF(90,90)); // Рисуем линию } зачем это в конструкторе ? Убирай оттуда это ![]() Чтобы реагировать на изменение размера, переопредели виртуалку void QWidget::resizeEvent ( QResizeEvent * event ) |
|
|
PVGDRK |
![]()
Сообщение
#12
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
В paintEvent тоже размещала - все равно не выводится линия
может чего забыла где приписать, инклюд какой нибудь или еще чего нибудь? |
|
|
Алексей1153 |
![]()
Сообщение
#13
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
и вот так не рисуется ?
а окно то вообще на экране отображено ? Может оно невидимо |
|
|
PVGDRK |
![]()
Сообщение
#14
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да, окно есть , но на нем ничего не рисуется
![]() |
|
|
igor_bogomolov |
![]()
Сообщение
#15
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
я не вижу как у вас связаны RenderArea и Window?
|
|
|
PVGDRK |
![]()
Сообщение
#16
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
похоже они у меня не связаны
![]() Если в файл window.h изменить так: Раскрывающийся текст #ifndef WINDOW_H #define WINDOW_H #include <QWidget> #include <QPainter> class RenderArea; class QComboBox; class Window : public QWidget { Q_OBJECT public: Window(); private: QComboBox *fillRuleComboBox; }; #endif А файл window.с изменить так: Раскрывающийся текст #include "window.h" #include <QtGui> #include <math.h> #include "renderarea.h" Window::Window() { fillRuleComboBox = new QComboBox; fillRuleComboBox->addItem(tr("Odd Even"), Qt::OddEvenFill); fillRuleComboBox->addItem(tr("Winding"), Qt::WindingFill); QGridLayout *mainLayout = new QGridLayout; mainLayout->addWidget(fillRuleComboBox, 1, 1, 1, 3); setLayout(mainLayout); } То выводится маленькое окошко с комбобоксом,,,, Как это все связать? Я уже запуталась |
|
|
Алексей1153 |
![]()
Сообщение
#17
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
PVGDRK, тебе надо объявить в классе Window
а затем реализовать
а насчёт комбы - ну это ты сама решай, надо тебе его или нет )) |
|
|
PVGDRK |
![]()
Сообщение
#18
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вот спасибо то огромное!!! Нарисовалась линия
![]() Уж простие, но мне бы как для самого круглого чайника, не могли бы пояснить с размером окна void QWidget::resizeEvent ( QResizeEvent * event ) Куда это вписать ? почему окно все равно выводится, если написано так: файл window.h Раскрывающийся текст #ifndef WINDOW_H #define WINDOW_H #include <QWidget> #include <QPainter> class RenderArea; class QWidget; class Window : public QWidget { Q_OBJECT public: Window(); protected: void paintEvent(QPaintEvent *); }; #endif файл window.c Раскрывающийся текст #include "window.h" #include <QtGui> #include <math.h> #include "renderarea.h" Window::Window() { } файл renderarea.h Раскрывающийся текст #ifndef RENDERAREA_H #define RENDERAREA_H #include <QPainterPath> #include <QWidget> class RenderArea : public QWidget { Q_OBJECT public: RenderArea(const QPainterPath &path, QWidget *parent = 0); private: QPainterPath path; }; #endif файл renderarea.c Раскрывающийся текст #include <QtGui> #include <QPainter> #include "renderarea.h" #include "window.h" RenderArea::RenderArea(const QPainterPath &path, QWidget *parent) : QWidget(parent), path(path) { } void Window::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true); painter.drawLine(QPointF(10,10),QPointF(90,90)); } Где тогда задаются размеры окна? |
|
|
Алексей1153 |
![]()
Сообщение
#19
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
не понимаю вопрос - размеры какого окна хочешь задавать ? Какова иерархия окон и их взаимное расположение ?
|
|
|
PVGDRK |
![]()
Сообщение
#20
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
С вышеприведенным текстом у меня выводится одно окно почти на весь экран с нарисованной линией.... Поэтому я предполагаю, что нет у меня иерархии окон ... может и окна то нет? В смысле оно не описано как надо... Но я то его вижу... Ох, все- совсем запуталась
|
|
|
Алексей1153 |
![]()
Сообщение
#21
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
где у тебя создаётся объект класса RenderArea и какой у него (объекта) родитель ?
|
|
|
PVGDRK |
![]()
Сообщение
#22
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Я так понимаю, что объект класса RenderArea у меня не создается а окно то выводится...
В main написано так: Раскрывающийся текст int main(int argc, char *argv[]) { QApplication a(argc, argv); Window window; window.show(); return a.exec(); } Может окно window выводится? |
|
|
Алексей1153 |
![]()
Сообщение
#23
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
PVGDRK |
![]()
Сообщение
#24
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо за подсказку
![]() Пойду отчеты допишу и займусь своим окном |
|
|
PVGDRK |
![]()
Сообщение
#25
|
Студент ![]() Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Я бы на вашем месте не мучился и использовал для этих целей графическую сцену. Смотреть в сторону QGraphicsView, QGraphicsScene, QGraphicsItem. При помощи этих компонент вашу задачу решить легче. Спасибо большое, за такой совет. Помучившись немного с QPainter - все таки сделала часть с помощью QGraphicsScene. Вот возник такой вопрос - у меня на объекте graphicsView выводятся эллипсы... Мне бы нужно внутри каждого эллипса разместить текст, причем так, чтобы при перемещении эллипса мышью текст перемещался вместе с ним... Я правильно понимаю, что нужно создать класс для эллипса а надпись в эллипсе будет объектом этого класса? и еще интересует вопрос с координатами на сцене... Есть ли методы, позволяющие, после перемещения объекта сцены считать , напрмер, по нажатию кнопки новые координаты объекта? Подскажите, пожалуйста, как это сделать... И еще интересует вопрос про точность задания координат эллипсов ... Может быть есть какие то методы, позволяющие перемещать объект мышью с определнным шагом? Эллипсы будут перемещаться с помощью мыши по двум осям X или Y... с шагом 0,5 ... мне придется анализировать в какой интервал попал эллипс и преобразовывать его координаты к нужному мне виду? Вот обратный процесс вполне нормально работает - после ввода координат эллипсов в таблицу и нажатия кнопки - все эти кружочки сами распередляются по заданным координатам... |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 30.5.2025, 6:59 |