Привет!
Я пробую использовать Qt Widgets в X3D-программах. Для добавления текстуры на сцену использую
<UITexture>. Однако поля ввода остаются неактивны (не позволяют вносить текст с клавиатуры). Проблема отсутствует, если открывать интерфейс в отдельном окне с помощью соответствующего поля show <UITexture>, но это не ок. Делал ли кто-нибудь что-нибудь подобное??
Разметка X3D: здесь бокс бегает влево-вправо, если теребить счётчик и ползунок, а хочется вводить цифры с клавы
<?xml version="1.0" encoding="UTF-8"?>
<X3D version="3.2"> <Scene><Background skyColor="1 1 1"/>
<Viewpoint position="0 0 4"/>
<Transform DEF="бокс" translation="0 0 0">
<Shape> <Box size="0.5 0.5 0.5" /> <Appearance> <Material diffuseColor="0 1 0" /> </Appearance> </Shape>
</Transform>
<TouchSensor DEF='сенсорМыши'/>
<Transform translation="0 -0.7 0" scale="1 1 1">
<Shape> <Rectangle2D size="2 1" resolution="2"/>
<Appearance>
<Material diffuseColor='0.7 0.7 0.7'/>
<UITexture DEF="текстура" url="gui.ui" >
<field name="q" type="SFInt32" accessType="inputOutput" value="0"/>
<field name="q2" type="SFInt32" accessType="inputOutput" value="0"/>
</UITexture>
</Appearance>
</Shape></Transform>
<Script DEF='перемещение'>
<field name='q' type='SFInt32' accessType='inputOnly'/>
<![CDATA[ ecmascript:
function q(v) {
Browser.currentScene.getNamedNode('бокс').translation[0] = v;
}
]]> </Script>
<ROUTE fromNode='сенсорМыши' fromField='isActive' toNode='текстура' toField='set_button1'/>
<ROUTE fromNode='сенсорМыши' fromField='hitTexCoord_changed' toNode='текстура' toField='set_pointer'/>
<ROUTE fromField='q' fromNode='текстура' toField='q' toNode='перемещение'/>
<ROUTE fromField='q2' fromNode='текстура' toField='q' toNode='перемещение'/>
</Scene> </X3D>
Разметка UI:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>447</width>
<height>154</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QSpinBox" name="spinBox">
<property name="geometry">
<rect>
<x>120</x>
<y>40</y>
<width>42</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>170</x>
<y>40</y>
<width>113</width>
<height>25</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>447</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
Всё запускается в InstantPlayer