crossplatform.ru

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

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Свойства QComboBox-мембера в дизайнере
Алексей1153
  опции профиля:
сообщение 29.3.2011, 8:38
Сообщение #1


фрилансер
******

Группа: Участник
Сообщений: 2889
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


если в дизайнере положить на форму элемент QComboBox, то его содержимое можно настроить правой кнопкой -> изменить элементы. Так вот, имеется некий класс контрола

class A : QObject 
{
   ....
  
    QComboBox* m_CBX;
};


контрол добавлен в дизайнер, на нём виден дочерний комбобокс

Как сделать так, чтобы щелчком по контролу A можно было бы выбрать тот самый пункт меню с настройкой комбобокса (то есть нужна полная аналогия настройки содержимого одиночного QComboBox )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 30.3.2011, 21:13
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2889
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


неужели никак ? :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 31.3.2011, 8:27
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Есть одна идея, но придется реализовывать парочку интерфейсов дизайнера...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 31.3.2011, 15:55
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2889
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


PAFOS, ну давай уже, жги )

Сообщение отредактировал Алексей1153 - 31.3.2011, 15:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 4.4.2011, 8:42
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Сорри за долгое молчание )

У дезигнера есть интерфейс QDesignerTaskMenuExtension, который позволяет добавлять свои пункты в это самое меню)
=> у комбо бокса этот интерфейс реализован.

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

Но это тока идеи) сам я этим не занимался :unsure:

Или же внутри своего плагина, создавать плагин комбо бокса и добавлять в своим actions, actions комбо бокса

Сообщение отредактировал PAFOS - 4.4.2011, 8:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 4.4.2011, 17:02
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2889
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


PAFOS, спасибо, гляну. Как раз сегодня надо этим всем уже вплотную занятся )) Хоть направление немного ясно стало
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.4.2011, 19:53
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2889
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


детально ещё не разобрался, но вот мучает вопрос (и ответа я не встретил) - всё это позволяет менять свойства контрола на форме, но а как же заставить дизайнер создать тот код, который в ui при запуске программы вставит добавленные в редакторе элементы списка ?
PS Немного засыпаю от усталости, может поэтому тупняк нападает )))

Сообщение отредактировал Алексей1153 - 5.4.2011, 19:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 6.4.2011, 9:03
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Когда дизайнер вызывает QString QDesignerCustomWidgetInterface::domXml () const для твоего виджета, ты должен вернуть xml, описывающий виджет.
В этом методе ты как-то должен вызвать domXml для комбо бокса, он вернет свой xml описатель и ты вставишь его в свой.
Сделал на дизайнере форму и комбо бокс с тремя итемами.
Вот что выдал дизайнер:

Раскрывающийся текст
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <widget class="QComboBox" name="comboBox">
   <property name="geometry">
    <rect>
     <x>80</x>
     <y>90</y>
     <width>251</width>
     <height>22</height>
    </rect>
   </property>
   <item>
    <property name="text">
     <string>New Item</string>
    </property>
   </item>
   <item>
    <property name="text">
     <string>New Item</string>
    </property>
   </item>
   <item>
    <property name="text">
     <string>New Item</string>
    </property>
   </item>
   <item>
    <property name="text">
     <string>New Item</string>
    </property>
   </item>
  </widget>
</widget>
<resources/>
<connections/>
</ui>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.4.2011, 12:54
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2889
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


у меня метод domXml () сейчас пустой. Как его заполнять для своего контрорла - не ведаю. Или тупо вызвать оттуда комбовскую функцию domXml () ?

ааа, кажись потихоньку начинает доходить ))) Нужно как-то "перехватить" вызов domXml() у комбы и подставить нужные айтемы, так ?

так, снова гоню! Это же у самого контрола теперь такая виртуальная функция - от родителя QDesignerCustomWidgetInterface. Видимо, там и нужно нечто похожее собрать. Спасибо за пинки в нужную сторону )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.4.2011, 20:42
Сообщение #10


фрилансер
******

Группа: Участник
Сообщений: 2889
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


блин, какой-то замкнутый круг выходит

Я определил, что по умолчанию вертает domXml()

Сделал возвращение того же, но с двумя свойствами
<property name="text0"><string>111</string></property>
<property name="text1"><string>222</string></property>

эти свойства показались в дизе. И , я так понимаю, это выход - ведь как-то эти свойства в рантайме можно прочитать и заполнить ими комбу. Это ладно.

Далее, сделал так: в переопределённом domXml получаю дефолтную строку, вытаскиваю из неё имя переменной, составляю с участием этого имени нужный XML. И тут облом - при запуске диза он где-то неправильно инициализирует контрол, то ли имена пересекаются. После этого контрол не желает вообще перетаскиваться на форму

Куда дальше кидаться ?

в общем-то, по какому-то признаку нужно уметь определить, лежит ли контрол на форме или он лежит в списке контролов дизайнера. Во втором случае нужно вернуть дефолит - тогда было бы всё ок

Сообщение отредактировал Алексей1153 - 6.4.2011, 20:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 12.11.2019, 1:15