Russian Qt Forum
Ноябрь 22, 2024, 23:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Рисование для чайников  (Прочитано 26493 раз)
Dkrav
Гость
« : Февраль 02, 2011, 15:20 »

Очень хочу понять как же рисовать в QT.

Никак не могу понять чего он от меня хочет. Как связать визуальные элементы на форме.

Нужна реализация очень простого примера.

Есть форма. на ней кнопочка и объект QGraphicsView. Так  вот хочу сделать так чтобы при нажатии на кнопку на  QGraphicsView появилась линия.

PS. Пришел с Делфи. Там это делается одной строчкой. Тут уже перечитал кучу документации пересмотрел кучу примеров, но концепции так и не понял.

PPS: Можете обзывать кем угодно - но после того как покажете готовый проект  Подмигивающий 
Записан
_govorilka
Гость
« Ответ #1 : Февраль 02, 2011, 15:48 »

Возьми вот эту книжку:
http://hzsystem.googlecode.com/files/qt45x.djvu

Думаю тебе поможет.
Записан
Dkrav
Гость
« Ответ #2 : Февраль 02, 2011, 18:01 »

Спасибо за книжку. Занятная. Но это всё я уже читал. В книге все примеры построены на создании элементов непосредственно в тексте программы. Меня же интересует использование UI файла созданного в QT Creator'е.
Записан
_govorilka
Гость
« Ответ #3 : Февраль 02, 2011, 18:46 »

Спасибо за книжку. Занятная. Но это всё я уже читал. В книге все примеры построены на создании элементов непосредственно в тексте программы. Меня же интересует использование UI файла созданного в QT Creator'е.

Там в 45 главе описано создание прототипов.
« Последнее редактирование: Февраль 02, 2011, 19:20 от _govorilka » Записан
Dkrav
Гость
« Ответ #4 : Февраль 02, 2011, 18:56 »

Всю естественно не прочитал. Ибо не электроник  Строит глазки

И в готовых примерах которые идут с QT всё построение тоже ориентировано на работу в тексте программы.  Грустный

Да и что имеется в виду под "хорошо выучить С++"?
Моих знаний достаточно для реализации задуманных алгоритмов. Проблемы именно с GUI.   
« Последнее редактирование: Февраль 02, 2011, 18:59 от Dkrav » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #5 : Февраль 02, 2011, 19:09 »

Проблемы именно с GUI.    
Лентяй .
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
_govorilka
Гость
« Ответ #6 : Февраль 02, 2011, 19:33 »

Тот что в книге описано про Qt Designer, полностью сопдает с тем. что есть есть сейчас в Qt Creator. Просто ассистент и дизайнера стали частью Qt Creator и как отдельные проекты практически не развиваются.

Файлы *.ui - это xml описывающий какие графические элементы нужно создавать и с какими параметрами. Файлы можно править в блокноте (некоторые возможности uic из Designer'а не доступны). На основе этих файлов UIC генерирует *.h файл, который затем подключается к проекту и компилируется вместе с ним. Его содержимое можно посмотреть в папке с obj файлами.

В генериуемом хедере объявляется класс Ui::*..., все контроли, которые ты накидаешь в дизайнере будет членами этого класса. В классе, форму которого ты правишь, добавлениется переменная с именем ui (можно переименовать на любую другую).

В этом примере есть использование Ui: examples/widgets/stylesheet. Также есть использование страниц стилей.

Механизм UI очень похож на Delphi 7, только там создержимое DFM отправлется в ресурсы exe файла, а его обработка происходит при каждом вызове программы.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Февраль 02, 2011, 20:26 »

Очень хочу понять как же рисовать в QT.
Так  вот хочу сделать так чтобы при нажатии на кнопку на  QGraphicsView появилась линия.
Меня же интересует использование UI файла созданного в QT Creator'е.
 
Графический объект (линию) нельзя нарисовать в дизайнере. Да и в Дельфи тоже (в нём надо было программно на канве рисовать)

Здесь концепт другой, рисуешь на сцене (QGraphicsScene), а представление (QGraphicsView) представляет часть сцены или её всю.
Записан

Юра.
Dkrav
Гость
« Ответ #8 : Февраль 02, 2011, 23:46 »

Проблемы именно с GUI.    
Лентяй .

Может я и лентяй, но для меня дикость тратить много времени на формочки, кнопочки и их взаимодействие. Это дело программной оболочки. Заказывают не кнопочки, а функционал. Потому то мне и не охота сначала намаятся, а потом понять что всё делал "через задницу" (извините мой французский  Строит глазки )
Записан
Dkrav
Гость
« Ответ #9 : Февраль 02, 2011, 23:51 »

Очень хочу понять как же рисовать в QT.
Так  вот хочу сделать так чтобы при нажатии на кнопку на  QGraphicsView появилась линия.
Меня же интересует использование UI файла созданного в QT Creator'е.
 
Графический объект (линию) нельзя нарисовать в дизайнере. Да и в Дельфи тоже (в нём надо было программно на канве рисовать)

Здесь концепт другой, рисуешь на сцене (QGraphicsScene), а представление (QGraphicsView) представляет часть сцены или её всю.

Да в Дельфе рисовалось и рисуется на канве. И подход очень простой Улыбающийся
Вот в том то и вопрос как привязать QGraphicsScene к QGraphicsView уже описанному на форме.
Записан
ieroglif
Гость
« Ответ #10 : Февраль 03, 2011, 05:17 »

http://www.prog.org.ru/topic_13567_0.html

з.ы. всё равно лентяй  Показает язык
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Февраль 03, 2011, 07:58 »

>>Вот в том то и вопрос как привязать QGraphicsScene к QGraphicsView уже описанному на форме.
Читай тут
Записан

Юра.
Dkrav
Гость
« Ответ #12 : Февраль 03, 2011, 12:53 »

Как я посмотрю тут все знают как оно теоретически должно работать, но практически не применяет.

Вот что я успел для себя накопать и реализовать  Подмигивающий помоему это самый простой вариант из всего что я видел
Код:
void MainWindow::on_pushButton_clicked()
{
    QRect    rect(ui->plbl->contentsRect());

    QImage sourceImage(rect.size(), QImage::Format_ARGB32_Premultiplied);
    QPainter painter;
    painter.begin(&sourceImage);
        painter.setRenderHint(QPainter::Antialiasing, true);
        painter.setPen(QPen(QColor(0, 255, 0)));
        painter.drawLine(0,0,100,100);
    painter.end();

    ui->plbl->setPixmap(QPixmap::fromImage(sourceImage));
}

« Последнее редактирование: Февраль 03, 2011, 13:10 от Dkrav » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Февраль 03, 2011, 15:53 »

Забомбили теорией  Улыбающийся Попробую своими словами и попроще
Так  вот хочу сделать так чтобы при нажатии на кнопку на  QGraphicsView появилась линия.
Рисование может вызываться в любой момент и никак не связано с нажатием кнопки. Поэтому QGraphicsView должен каким-то образом знать рисовать ему линию или нет. Простейший способ - завести в нем член класса данные/флажок. Если установлен - значит рисовать линию. При нажатии кнопки этот флажок взводится (обычно через сигнал). При нажатии др. кнопки может (например) сбрасываться. Ну не забыть repaint чтобы обновить изображение. Вот и все.
Записан
Dkrav
Гость
« Ответ #14 : Февраль 03, 2011, 16:08 »

Как-то через чур за мудро Улыбающийся Нанять художника и человека который бы его будил  Веселый

В любом случае всем спасибо Улыбающийся Если кто-то может предложить более простой способ, чем тот что я уже реализовал - милости просим Улыбающийся ато рисовать на Лабелах это для меня как-то совсем прикольно  Смеющийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.069 секунд. Запросов: 22.