crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

genusatplay
  опции профиля:
сообщение 29.11.2008, 11:48
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


нужно написать программу "редактор шаблонов"
у нее должна быть область представления шаблона и например справа панель инструментов, в которой можно выбрать элемент (текст,таблица и т.д), перетащить элемент в окошко представления шаблона
он должен выглядеть на подобии кнопки с именем элемента.
далее если выделить элемент, то в панели инструментов появляется возможность редактировать свойства элемента(в БД есть таблица в которой каждому элементу присвоено значение, к примеру элемент text, в БД у него какое то значение есть, следовательно у элемента text должны быть свойства шрифт,размер, цвет и обычные свойства которые будут у всех типов элементов выравнивание, отступ слева, справа и тд, )
после создания шаблона все элементы кладутся в xml.
xml вот такого вида должен получиться
<?xml version='1.0' encoding='utf-8'?>
<shablon>
    <text name="text01">
        <size>22pt</size>
        <color>#66ff99</color>
        <font-family>serif</font-family>
        <margin-top>12px</margin-top>
        <margin-bottom>12px</margin-bottom>
        <margin-left>30px</margin-left>
        <margin-right>0px</margin-right>
        <font-weight>400</font-weight>
        <align>center</align>
    </text>
    ...
</shablon>

а сам шаблон + документ(в БД) я уже могу с помощью консольной проги соединить и в пдф запихнуть

по идее программа простая
но только я не понимаю как это реализовать
подскажите плиз с какой стороны копать и чем это реализовыватьь

Сообщение отредактировал genusatplay - 29.11.2008, 13:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
5 страниц V   1 2 3 > »   
Начать новую тему
Ответов (1 - 41)
Litkevich Yuriy
  опции профиля:
сообщение 29.11.2008, 13:02
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


genusatplay, что-то с русским языком у тебя совсем напрежёнка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 29.11.2008, 13:10
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 29.11.2008, 13:02) *
genusatplay, что-то с русским языком у тебя совсем напрежёнка.

да не, все норм... если оч ненравиться могу поправить..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 29.11.2008, 13:18
Сообщение #4


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Цитата(Litkevich Yuriy @ 29.11.2008, 13:02) *
genusatplay, что-то с русским языком у тебя совсем напрежёнка.


+1. Тоже ничего не понял.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 29.11.2008, 13:41
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


так лучше?

Сообщение отредактировал genusatplay - 29.11.2008, 13:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.11.2008, 14:21
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


все равно понятного мало, это что-то вроде Qt Designer'а получится должно или нет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 29.11.2008, 14:41
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 29.11.2008, 14:21) *
все равно понятного мало, это что-то вроде Qt Designer'а получится должно или нет?

хм.. должно получиться
приложение для создания шаблона, похожее наверно больше на TextEdit только в нем можно располагать элементы, редактировать их свойства, и выгружать в xml
почему больше на textedit похоже будет.. ну наверно чтоб было видно, как будет виден документ
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.11.2008, 15:22
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


genusatplay, я в толк взять не могу, для чего шаблоны-то? Для текста? Можешь привести снимок программы, в которой такое есть?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 29.11.2008, 16:17
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


у меня просто задание сделать консольную прогу которая из шаблона и данных(в бд) делает пдф,
и гуи прогу с помощью которой шаблоны можно делать
да шаблоны для текста
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 29.11.2008, 17:37
Сообщение #10


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(genusatplay @ 29.11.2008, 16:17) *
у меня просто задание сделать консольную прогу которая из шаблона и данных(в бд) делает пдф,
и гуи прогу с помощью которой шаблоны можно делать
да шаблоны для текста


интересное задание.
а на сколько реализовать нужно пдф??? на сколько мне известно это формат еще ни один просмотрщик не реализовал полностью.

предполагается, что элементы на шаблоне:
текст,
картинка,
ссылка(?),

что то еще???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 29.11.2008, 18:57
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kwisp @ 29.11.2008, 17:37) *
Цитата(genusatplay @ 29.11.2008, 16:17) *
у меня просто задание сделать консольную прогу которая из шаблона и данных(в бд) делает пдф,
и гуи прогу с помощью которой шаблоны можно делать
да шаблоны для текста


интересное задание.
а на сколько реализовать нужно пдф??? на сколько мне известно это формат еще ни один просмотрщик не реализовал полностью.

предполагается, что элементы на шаблоне:
текст,
картинка,
ссылка(?),

что то еще???

ну еще таблица,
из textedita экспортится в pdf нормально
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 29.11.2008, 20:13
Сообщение #12


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


а вопрос состоял: с чего начать???

если мало мальски знаком с Qt,
попробуй начать с элементов, которые будешь тащить на полотно шаблона.
1. общие свойства
2. свойства каждого в отдельности.

допустим: когда юзер тащит элемент на полотно создаем новый объект класса выбранного элемента, затем редактируем его свойства, затем тащим следующий элемент, после нажатия заветной кнопки СоздатьШаблон бежим по массиву указателей на элементы составленному в соответствии с положением элементов : слева направо сверху вниз читаем их свойства и с помощью Qt механизмов работы с хмл или своих пишем файл.

(к примеру о тексте) у меня такой вопрос: создание шаблона тем способом которым ты хочешь слабо отражает наглядно изменение размера текста а из-за отсутствия самого текста следовательно ты даже ориентировочно не знаешь сколько места займет твой текст. на шаблоне одна кнопка а в реальности 20 страниц.
отсюда вопрос: я подозреваю, что ты все же знаешь сколько примерно будет букоф в тексте какая картинка может быть какой колонтитул какая таблица???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 30.11.2008, 8:03
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kwisp @ 29.11.2008, 20:13) *
а вопрос состоял: с чего начать???

если мало мальски знаком с Qt,
попробуй начать с элементов, которые будешь тащить на полотно шаблона.
1. общие свойства
2. свойства каждого в отдельности.

допустим: когда юзер тащит элемент на полотно создаем новый объект класса выбранного элемента, затем редактируем его свойства, затем тащим следующий элемент, после нажатия заветной кнопки СоздатьШаблон бежим по массиву указателей на элементы составленному в соответствии с положением элементов : слева направо сверху вниз читаем их свойства и с помощью Qt механизмов работы с хмл или своих пишем файл.

(к примеру о тексте) у меня такой вопрос: создание шаблона тем способом которым ты хочешь слабо отражает наглядно изменение размера текста а из-за отсутствия самого текста следовательно ты даже ориентировочно не знаешь сколько места займет твой текст. на шаблоне одна кнопка а в реальности 20 страниц.
отсюда вопрос: я подозреваю, что ты все же знаешь сколько примерно будет букоф в тексте какая картинка может быть какой колонтитул какая таблица???

на данный момент так и получается, что я незнаю как будет выглядеть текст, надо будет уточнить этот вопрос
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 30.11.2008, 21:11
Сообщение #14


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


можно попробовать сделать так: будет два документа
на один тащишь и размещаешь а на другом показываешь как это будет выглядеть.
но опять же тестовый образец текста и картинки будут занимать опр кол-во места.

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

еще вопрос а как ты в хмл пустые строки делаешь. чтоб в пдф получился отступ ну или пустые строчки.???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 30.11.2008, 23:27
Сообщение #15


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kwisp @ 30.11.2008, 21:11) *
можно попробовать сделать так: будет два документа
на один тащишь и размещаешь а на другом показываешь как это будет выглядеть.
но опять же тестовый образец текста и картинки будут занимать опр кол-во места.

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

еще вопрос а как ты в хмл пустые строки делаешь. чтоб в пдф получился отступ ну или пустые строчки.???

там есть настройка отступ слева справа сверху снизу

вот начал тока форму делать.. чета непойму что он хочет..
Прикрепленные файлы
Прикрепленный файл  shablon.zip ( 1.69 килобайт ) Кол-во скачиваний: 135
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 1.12.2008, 11:38
Сообщение #16


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


elemList = new List(); //чего это такое??

я сделал так:

28 строка // elemList = new List();// здесь ругался компилятор потому что ты не указал тип elemList
29 строка
30 строка frameLayout->addWidget(new List());

и твоя чудо форма появилась:)

на одной строчке не может быть и таблица и текст????

почитай пожалуйста о работе с памятью в Qt . у тебя elemList никому не принадлежит не член класса и ты его явно не грохаешь "delete`ом" когда помять вернешь спрашвается???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 1.12.2008, 16:56
Сообщение #17


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


в qt demos есть пример с пазлм из картинки там написано так:
piecesList = new PiecesList;
...
frameLayout->addWidget(piecesList);

и работает..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.12.2008, 17:10
Сообщение #18


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(genusatplay @ 1.12.2008, 19:56) *
и работает..
значит piecesList, где-то объявлена, если просто написать имя переменной, то компилер должен ругаться, так как он незнает типа переменной.

genusatplay, вот этот кусок кода вобще ахинея:
void List::initItems()
{
...
    new QListWidgetItem(icon, "Text" , this);
    new QListWidgetItem(icon, "Table", this);    
}

Это С++, а не Оберон!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 1.12.2008, 17:17
Сообщение #19


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 1.12.2008, 17:10) *
Цитата(genusatplay @ 1.12.2008, 19:56) *
и работает..
значит piecesList, где-то объявлена, если просто написать имя переменной, то компилер должен ругаться, так как он незнает типа переменной.

genusatplay, вот этот кусок кода вобще ахинея:
void List::initItems()
{
...
    new QListWidgetItem(icon, "Text" , this);
    new QListWidgetItem(icon, "Table", this);    
}

Это С++, а не Оберон!

с list'ом тупанул.. в *.h была прописана переменная.. я незаметил терь все как надо

а с итемами что нетак?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.12.2008, 17:22
Сообщение #20


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(genusatplay @ 1.12.2008, 20:17) *
а с итемами что нетак?
нормальная практика это объявление указателя, а затем динамическое (через оператор new) создание объекта и инициализация указателя. Т.е. например так:
void List::initItems()
{
...
    QListWidgetItem  *p_i1 = new QListWidgetItem(icon, "Text" , this);
    QListWidgetItem  *p_i2 = new QListWidgetItem(icon, "Table", this);    
}


если тебе переменные p_i* будут нужны в дальнейшем, то их нужно объявлять в классе, чтобы область видимости была "Весь класс". Если же в дальнейшем не нужна, то можно объявить как в пример (в теле функции), но область видимости при этом только данная функция.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 1.12.2008, 17:27
Сообщение #21


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 1.12.2008, 17:22) *
Цитата(genusatplay @ 1.12.2008, 20:17) *
а с итемами что нетак?
нормальная практика это объявление указателя, а затем динамическое (через оператор new) создание объекта и инициализация указателя. Т.е. например так:
void List::initItems()
{
...
    QListWidgetItem  *p_i1 = new QListWidgetItem(icon, "Text" , this);
    QListWidgetItem  *p_i2 = new QListWidgetItem(icon, "Table", this);    
}


если тебе переменные p_i* будут нужны в дальнейшем, то их нужно объявлять в классе, чтобы область видимости была "Весь класс". Если же в дальнейшем не нужна, то можно объявить как в пример (в теле функции), но область видимости при этом только данная функция.

мне нужно будет только узнавать какой элемент был перенесен на форму(вроде больше ненужно).. для этого мне нужны эти переменные будут?
хотя пускай будут..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.12.2008, 17:51
Сообщение #22


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


вот этой строке:
QIcon icon = qApp->style()->standardIcon(QStyle::SP_DriveDVDIcon);

не место в классе, который где-то зарыт в программе.

Представь себе ситуацию:
ты используешь сторонний класс (разработан кем-то), а он вдруг устанавливает иконку приложения.
Такую строку надо делать в функции main либо создавать предка от QAplication и в нем устанавливать иконки, переводчики, пути к библиотекам и т.п.

Цитата(Litkevich Yuriy @ 1.12.2008, 20:28) *
вот этой строке:
QIcon icon = qApp->style()->standardIcon(QStyle::SP_DriveDVDIcon);
Language: cpp

не место в классе, который где-то зарыт в программе.

Представь себе ситуацию:
ты используешь сторонний класс (разработан кем-то), а он вдруг устанавливает иконку приложения.
Такую строку надо делать в функции main либо создавать предка от QAplication и в нем устанавливать иконки, переводчики, пути к библиотекам и т.п.
Прошу прощения, тут я чушь сморозил (думал иконка приложения устанавливается)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 1.12.2008, 22:28
Сообщение #23


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


подскажите плиз что мне делать?
я не представляю вообще(все из за нервов.. уже сдавать скоро)... подскажите что юзать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 2.12.2008, 0:06
Сообщение #24


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


как мне сделать чтото типа записи?
хочу сделать лист записей который будет содержать прямоугольник который будет рисоваться и параметры

поясните что такое
dragEnterEvent
dragMoveEvent

dropEvent и mousePressEvent вроде понятно эвент при отпускании элемента и эвент при нажатии клавиши

или мб ктонить.. объясните как работает драг&дроп

ласт едит
void List::mousePressEvent(QMouseEvent *event)
{
    QLabel *child = static_cast<QLabel*>(childAt(event->pos()));
    if(!child)
        return;

    QPixmap pixmap = *child->pixmap();
    //QPixmap pixmap = QPixmap(":/images/house.png");
    
    QByteArray itemData;
    QDataStream dataStream(&itemData, QIODevice::WriteOnly);
    dataStream << pixmap << QPoint(event->pos() - child->pos());

    QMimeData *mimeData = new QMimeData;
    mimeData->setData("elemtext",itemData);

    QDrag *drag = new QDrag(this);
    drag->setMimeData(mimeData);
    drag->setPixmap(pixmap);
    drag->setHotSpot(event->pos() - child->pos());

    if ( drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction ) == Qt::MoveAction )
        child->close();
    else {
        child->show();
        child->setPixmap(pixmap);
    }
}

что нужно создавать вместо QLabel?
или как правильно запихивать из ListItem'а иконку в QLabel?

Сообщение отредактировал genusatplay - 2.12.2008, 1:18
Прикрепленные файлы
Прикрепленный файл  shablon.zip ( 6.35 килобайт ) Кол-во скачиваний: 126
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 2.12.2008, 2:50
Сообщение #25


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


как все запущено...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.12.2008, 7:37
Сообщение #26


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(genusatplay @ 2.12.2008, 3:06) *
поясните что такое
dragEnterEvent
dragMoveEvent

1-событие входа в режим перетаскивания
2-событие самого перетаскивания
(Это есть в асистенте)

Цитата(genusatplay @ 2.12.2008, 3:06) *
что нужно создавать вместо QLabel?
не понял цель.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 2.12.2008, 13:40
Сообщение #27


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 2.12.2008, 7:37) *
Цитата(genusatplay @ 2.12.2008, 3:06) *
что нужно создавать вместо QLabel?
не понял цель.

ну я взял этот кусок из демки "draganddrop" только там перетаскивали label'ы
я переделал впринципе под себя эту реакцию на эвент..
но с лэйблом выскакивает ошибка.. я так понял что он создает лэйбл.. такойже как и лэйбл на котором мы нажали.. но у меня то не лэйбл, а List , вот я и спрашиваю как переделать так чтоб для list'а пошло?

и как определить на каком элементе мы нажали и начали тянуть?
чтоб для разных элементов сделать разные иконки, или не иконки а чтонить другое
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 2.12.2008, 15:06
Сообщение #28


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


genusatplay,
не в обиду. по вопросам ясно что знания Qt и С++ "недостаточные". ты оцени сколько времени до сдачи и какие вопросы ты задаешь. очевидно это твой первый проект, наверное сложнова-то для первого раза.
может тебе если нужно просто сдать стоит пойти обходным путём?
а если есть желание начать посерьёзнее изучать и пользовать Qt+C++ так взять и основательно заняться этим вопросом. написать что нить по проще, поработать с ассистентом, почитать темы в ЭТОМ форуме, почитать М.Шлее в русском переводе и т.д. и т.п.
сколько у тебя времени признавайся?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.12.2008, 15:15
Сообщение #29


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


genusatplay, присоеденюсь к kwisp, тема Перетаскивания (drag-n-drop) не из простых. её надо тщательно и вдумчиво изучать.

Цитата(genusatplay @ 2.12.2008, 16:40) *
и как определить на каком элементе мы нажали и начали тянуть?
можешь в коде оригинального примера, найти это место и привести здесь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 2.12.2008, 20:10
Сообщение #30


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kwisp @ 2.12.2008, 15:06) *
genusatplay,
не в обиду. по вопросам ясно что знания Qt и С++ "недостаточные". ты оцени сколько времени до сдачи и какие вопросы ты задаешь. очевидно это твой первый проект, наверное сложнова-то для первого раза.
может тебе если нужно просто сдать стоит пойти обходным путём?
а если есть желание начать посерьёзнее изучать и пользовать Qt+C++ так взять и основательно заняться этим вопросом. написать что нить по проще, поработать с ассистентом, почитать темы в ЭТОМ форуме, почитать М.Шлее в русском переводе и т.д. и т.п.
сколько у тебя времени признавайся?

хех.. вы будете смеяться =)
это даже не лаба... ))
сдача диплома на след неделе ^.^
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.12.2008, 20:14
Сообщение #31


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(genusatplay @ 2.12.2008, 23:10) *
сдача диплома на след неделе ^.^
да, блин. Слов нет, одни слюни.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 2.12.2008, 20:16
Сообщение #32


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 2.12.2008, 15:15) *
можешь в коде оригинального примера, найти это место и привести здесь?

QLabel *child = static_cast<QLabel*>(childAt(event->pos()));
вот строчка эта и есть вроде
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.12.2008, 20:48
Сообщение #33


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


genusatplay, ну замени здесь QLable (два штуки) на тот тип какой тебе надо.
Смысл этой строки простой:
QLabel *child - создается указатель на нужный, в данном случае QLable, тип
= - этим оператором указатель инициализируется, т.к. сначало он показывал в никуда.
event->pos() - возвращает позицию (QPoint)
childAt(P) - возвращает видимый дочерний виджет в точке P
static_cast<QLabel*>(T) - здесь тип Т приводится к типу указатель на QLabel

и того, мы привели тип объекта находящегося под указателем мыши к указателю на QLable, и проинициализировали им объявленный только что указатель. Но сделали это не с бухты, барахты, а потому, что точно знаем, что унас имеется QLable.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 2.12.2008, 23:46
Сообщение #34


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


вот упростил..
скажите плиз почему элемент не добавляется?
и как лучше организовать хранение информации(свойств текста) для каждого элемента(лэйбла)
Прикрепленные файлы
Прикрепленный файл  text.zip ( 2.65 килобайт ) Кол-во скачиваний: 118
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 3.12.2008, 0:23
Сообщение #35


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(genusatplay @ 2.12.2008, 20:10) *
хех.. вы будете смеяться =)
это даже не лаба... ))
сдача диплома на след неделе ^.^

:clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 3.12.2008, 9:10
Сообщение #36


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Цитата(genusatplay @ 2.12.2008, 20:10) *
хех.. вы будете смеяться =)
это даже не лаба... ))
сдача диплома на след неделе ^.^


Ну время еще есть. Я всем рассказываю как я сдавал курсовую по теме "Алгоритмы неявных численных схем". За день до отчисления у меня ничего не было вообще, сам я был пьян, и единственное то помнил, так это то что тема про какие-то там схемы. И ничего на следующий день у меня в зачетке стояло "зачтено".

А вообще эти сообщения лучше перенести в треп:

1 сообщение
2 сообщение
3 сообщение

Я думаю что там они уместнее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.12.2008, 10:55
Сообщение #37


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(molchanoviv @ 3.12.2008, 12:10) *
А вообще эти сообщения лучше перенести в треп:
вообще всю тему надо разделить, а то тут каша, и диплом и drag-n-drop и редактор шаблонов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 3.12.2008, 12:39
Сообщение #38


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


подскажите пожалйста почему не работает добавление элемента?


mainwindow.cpp
#include <QtGui>

#include "mainwindow.h"
#include "dragwidget.h"

MainWindow::MainWindow(QWidget *parent)
:QMainWindow(parent)
{
setupWidgets();
setupMenus();

setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
setWindowTitle(tr("Shablon editor"));
}

void MainWindow::setupMenus()
{
fileMenu = menuBar()->addMenu(tr("&File"));

exitAction = fileMenu->addAction(tr("E&xit"));
exitAction->setShortcut(QKeySequence(tr("Ctrl+Q")));
connect(exitAction, SIGNAL(triggered()) , qApp , SLOT(quit()));

itemMenu = menuBar()->addMenu(tr("&Item"));
addText = itemMenu->addAction(tr("Add &Text"));
connect(addText, SIGNAL(triggered()) , qApp , SLOT(addEl())); // несоздает почемуто лэйбл

}
void MainWindow::setupWidgets()
{
QFrame *frame = new QFrame;
QHBoxLayout *frameLayout= new QHBoxLayout(frame);

editor = new DragWidget;
frameLayout->addWidget(editor);

setCentralWidget(frame);
}
void MainWindow::addEl()
{
AddElem *elem = new AddElem(editor);
}

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class DragWidget;
class QListWidgetItem;
class AddElem;

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
DragWidget *editor;
//AddElem *elem;
void addEl();


private:
void setupMenus();
void setupWidgets();

QMenu *fileMenu;
QMenu *itemMenu;

QAction *addText;
QAction *exitAction;


};
#endif

dragwidget.h
#ifndef DRAGWIDGET_H
#define DRAGWIDGET_H

#include <QFrame>

QT_BEGIN_NAMESPACE
class QDragEnterEvent;
class QDropEvent;
QT_END_NAMESPACE

//! [0]
class DragWidget : public QFrame
{
public:
DragWidget(QWidget *parent=0);
//void addElem(QFrame *parent);

protected:
void dragEnterEvent(QDragEnterEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dropEvent(QDropEvent *event);
void mousePressEvent(QMouseEvent *event);
};
//! [0]

class AddElem : public QLabel
{
public:
AddElem(QFrame *parent=0);
};
#endif

dragwidget.cpp
#include <QtGui>

#include "dragwidget.h"

//! [0]
DragWidget::DragWidget(QWidget *parent)
: QFrame(parent)
{
setMinimumSize(200, 200);
setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
setAcceptDrops(true);
//setBackgroundRole(Qt::white);

QLabel *boatIcon = new QLabel(this);
boatIcon->setText("OMAGA");
boatIcon->move(40, 40);
boatIcon->show();
boatIcon->setAttribute(Qt::WA_DeleteOnClose);

QLabel *carIcon = new QLabel(this);
carIcon->setText("asdasd");
carIcon->move(120, 20);
carIcon->show();
carIcon->setAttribute(Qt::WA_DeleteOnClose);

QLabel *houseIcon = new QLabel(this);
//houseIcon->setPixmap(QPixmap(":/images/house.png"));
houseIcon->setText("!@!@");
houseIcon->move(20, 120);
houseIcon->show();
houseIcon->setAttribute(Qt::WA_DeleteOnClose);

//AddElem *elem = new AddElem(this); //так элемент добавляется нормально
}
//! [0]

void DragWidget::dragEnterEvent(QDragEnterEvent *event)
{
...
}

void DragWidget::dragMoveEvent(QDragMoveEvent *event)
{
...
}

void DragWidget::dropEvent(QDropEvent *event)
{
...
}
void DragWidget::mousePressEvent(QMouseEvent *event)
{
...
}
AddElem::AddElem(QFrame *parent)
: QLabel(parent)
{

QLabel *elem = new QLabel(parent);
elem->setText("TextElement");
elem->move(10,10);
elem->show();
elem->setAttribute(Qt::WA_DeleteOnClose);
}

main.cpp
#include <QApplication>
#include <QHBoxLayout>
#include "mainwindow.h"

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

MainWindow w;
w.show();
//w.addEl(); //так тоже элемент добавляется

return app.exec();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 10.12.2008, 22:24
Сообщение #39


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


народ помогите плиз советом..
у меня есть QGraphicScene
на котором я создаю (class DiagramItem : public QGraphicsPolygonItem) в диаграм итеме храниться полигон и инфа(параметры)
я подобавлял на форму итемов, поредактил их
терь нада все сохранить в файл xml.. но вот в чем проблема..
итемы добавлялись в сцену в произвольном порядке.. мне нужно отсортировать их слева направа сверху вниз
по их координатам x,y относительно полотна
а потом выгрузить в файл и еще отнимать от Элемент_списка.x Предыдуший_элемент.x чтоб в итоге получать
в шаблоне отступ относительно предыдущего элемента.
мб есть какиенибудь стандартные фичи для такой сортировки?
если нет.. подскажите как мне это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.12.2008, 22:27
Сообщение #40


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(genusatplay @ 11.12.2008, 1:24) *
мб есть какиенибудь стандартные фичи для такой сортировки?
если нет.. подскажите как мне это сделать?
вот ты создай тему соответствующую, тогда быстрее помощь получишь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
genusatplay
  опции профиля:
сообщение 10.12.2008, 23:04
Сообщение #41


Студент
*

Группа: Участник
Сообщений: 50
Регистрация: 8.11.2008
Пользователь №: 416

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 10.12.2008, 22:27) *
вот ты создай тему соответствующую, тогда быстрее помощь получишь.

вроде это продолжение "редактора шаблонов" .. или на каждый вопрос тему создавать нада?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.12.2008, 4:30
Сообщение #42


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(genusatplay @ 11.12.2008, 2:04) *
вроде это продолжение "редактора шаблонов"
Это проффессиональный форум, в котором используется практика: "одна проблема - одна тема".
Суть этого подхода проста - человек приходит на форум в поиска решения проблемы и ищет он по названию темы, которое отражает проблему.

теме "редактор шаблонов" место в лучшем случае в "Технике програмирования", если нужно решить вопрос об организации программы. Но по факту место в "Трёпе".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

5 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 21.6.2025, 22:13