Qt信号和插槽xml

问题描述:

我一直在玩Qt几个月了。我通过编码和重新创建各种版本的代码来教我自己; QML,XML,C++,Gui。Qt信号和插槽xml

这种方法给了我很多见解。 但我被卡住了,下面的代码主要是在xml中完成的。但我无法让我的信号和插槽工作。一切看起来都很好,我想我错过了一些东西。

<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> 

要给出更多信息,当按下按钮时,代码只运行任何内容。错误说,

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’) 

任何建议......。

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

的UI文件也知道作为一个:

Qt设计形式

您正在寻找在通常情况下,XML是使用Qt Designer生成。我会遵循使用Designer的教程而不是编辑生成的文件。

我还没有看到xml的例子或在qt文档中编辑xml的含义。

说了这么多,要弄清楚你的当前问题的最好办法,就是打开Qt设计,让你的按钮和标签和您的连接在你的QMainWindow,并产生你的UI文件后,将其比作一个你试图手写的地方。

希望有所帮助。

+0

我会试试看,谢谢你的回复。我很确定我确实知道ui自动生成代码。那时我觉得那是令人沮丧的。从那以后,我一直把它作为一个未解决的问题。我很抱歉迟到的回复,并非常感谢你的帮助。 –