0

I have been playing with Qt for some months now. I am teaching myself through coding and recreating code in various versions; QML, XML, C++, Gui.

This approach is giving me a lot of insight. But I am stuck, The code below is mainly to do it all in xml. But I can’t get my signals and slots to work. Everything looks fine to me and I am thinking I have missed something.

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

To give more info the code runs just nothing when buttons are pressed. The errors say;

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

Any suggestions….??

1 Answers1

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

The Ui files are also know as a:

Qt Designer form

The XML you are looking at normally is generated by Qt Designer. I would follow a tutorial on using Designer instead of editing the generated file.

I haven't seen an example of the xml or an implication of editing the xml in the qt docs.

Having said all that, the best way to figure out your current problem, is to open Qt Designer, make your buttons and labels and your connections in your QMainWindow, and after it generates your ui file, compare it to the one you where trying to write by hand.

Hope that helps.

phyatt
  • 18,472
  • 5
  • 61
  • 80
  • I will try it and thank you for the reply. I am pretty sure I did do that knowing that ui does auto-generate the code. I think at that time that was what made it so frustrating. I have since put it on the back burner as an unsolved issue. I am sorry for the late reply back and thank you so much for the assistance. – Shannon Davis Sep 16 '13 at 10:31