2013-07-19 4 views
0

Je joue avec Qt depuis quelques mois maintenant. Je m'enseigne à coder et à recréer du code dans différentes versions; QML, XML, C++, Gui.Signaux Qt et slots en xml

Cette approche me donne beaucoup de perspicacité. Mais je suis coincé, Le code ci-dessous est principalement pour tout faire en XML. Mais je n'arrive pas à faire fonctionner mes signaux et mes machines à sous. Tout me semble bien et je pense avoir raté quelque chose.

<ui version="4.0"> 
    <class>enTry1</class> 
    <widget class="QMainWindow" name="enTry1"> 
     <property name="geometry" > 
      <rect> 
       <x>0</x> 
       <y>0</y> 
       <width>500</width> 
       <height>200</height> 
      </rect> 
     </property> 
     <property name="windowTitle"> 
      <string>All xml signals and slots example</string> 
     </property> 
     <widget class="QWidget" name="centralWidget"> 
      <widget class="QPushButton" name="pushButton"> 
       <property name="geometry"> 
        <rect> 
         <x>70</x> 
         <y>75</y> 
         <width>75</width> 
         <height>23</height> 
        </rect> 
       </property> 
       <property name="text"> 
        <string>Pushbutton</string> 
       </property> 
      </widget> 
      <widget class="QPushButton" name="pushButton_2"> 
       <property name="geometry"> 
        <rect> 
         <x>70</x> 
         <y>125</y> 
         <width>75</width> 
         <height>23</height> 
        </rect> 
       </property> 
       <property name="text"> 
        <string>Pushbutton_2</string> 
       </property> 
      </widget> 
      <widget class="QLabel" name="label"> 
       <property name="geometry"> 
        <rect> 
         <x>80</x> 
         <y>40</y> 
         <width>46</width> 
         <height>13</height> 
        </rect> 
       </property> 
       <property name="text"> 
        <string>TextLabel</string> 
       </property> 
      </widget> 
     </widget> 

     <widget class="QMenuBar" name="menuBar"> 
      <property name="geometry"> 
       <rect> 
        <x>0</x> 
        <y>0</y> 
        <width>400</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> 
     <connection> 
      <sender>pushButton</sender> 
      <signal>clicked()</signal> 
      <receiver>enTry1</receiver> 
      <slot>button1pressed()</slot> 
      <hints> 
       <hint type="sourcelabel"> 
        <x>113</x> 
        <y>138</y> 
       </hint> 
       <hint type="destinationlabel"> 
        <x>207</x> 
        <y>136</y> 
       </hint> 
      </hints> 
     </connection> 
     <connection> 
      <sender>pushButton_2</sender> 
      <signal>clicked()</signal> 
      <receiver>enTry1</receiver> 
      <slot>button2pressed()</slot> 
      <hints> 
       <hint type="sourcelabel"> 
        <x>127</x> 
        <y>199</y> 
       </hint> 
       <hint type="destinationlabel"> 
        <x>206</x> 
        <y>183</y> 
       </hint> 
      </hints> 
     </connection> 
    </connections> 
    <slots> 
     <slot>button1pressed()</slot> 
     <slot>button2pressed()</slot> 
    </slots> 

</ui> 

Pour plus d'informations, le code ne fonctionne simplement pas lorsque vous appuyez sur les boutons. Les erreurs disent;

QObject::connect: No such slot QLabel::button1pressed() in ./ui_entry1.h:69 
QObject::connect: (sender name: ‘pushButton’) 
QObject::connect: (receiver name: ‘label’) 
QObject::connect: No such slot enTry1::button2pressed() in ./ui_entry1.h:70 
QObject::connect: (sender name: ‘pushButton_2’) 
QObject::connect: (receiver name: ‘enTry1’) 

Toutes les suggestions .... ??

Répondre

1

http://qt-project.org/doc/qt-5.0/qtdesigner/designer-using-a-ui-file.html

http://qt-project.org/doc/qt-4.8/examples-designer.html

Les fichiers Ui sont connus aussi comme:

forme Qt Designer

Le XML que vous regardez est normalement généré par Qt Designer . Je voudrais suivre un tutoriel sur l'utilisation de Designer au lieu de modifier le fichier généré.

Je n'ai pas vu un exemple de XML ou une implication de l'édition du XML dans les documents qt. Après avoir dit tout cela, la meilleure façon de comprendre votre problème actuel, est d'ouvrir Qt Designer, faire vos boutons et étiquettes et vos connexions dans votre QMainWindow, et après il génère votre fichier ui, le comparer à celui vous où vous essayez d'écrire à la main.

Espérons que ça aide.

+0

Je vais essayer et je vous remercie pour la réponse. Je suis sûr que je l'ai fait en sachant que l'ui génère automatiquement le code. Je pense qu'à ce moment-là, c'était ce qui le rendait si frustrant. Je l'ai depuis mis en veilleuse comme un problème non résolu. Je suis désolé pour la réponse tardive de retour et je vous remercie beaucoup pour l'aide. –

Questions connexes