LINUX.ORG.RU

Пишу прогу... ошибка компиляции :(


0

0

Пишу простую программу в Qt Designer. В ней три файла: first.pro, main.cpp, maindlg.ui

first.pro:
---------------
unix {
  UI_DIR = .ui
  MOC_DIR = .moc
  OBJECTS_DIR = .obj
}
TEMPLATE	= app
LANGUAGE	= C++

CONFIG	+= qt warn_on release

SOURCES	+= main.cpp 
FORMS	= maindlg.ui
---------------

main.cpp:
---------------
#include <qapplication.h>
#include <qfiledialog.h>
#include <qstring.h>
#include "maindlg.h"

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    MainForm w;
    w.show();
    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
    return a.exec();
}

void MainForm::encode()
{
    QString fname = QFileDialog::getOpenFileName();
    if (fname != NULL){
        FileName->clean();
        FileName->insert(fname);
    }
    //add more...
}
-------------

Проблема такая. Делаю:

qmake
make
/usr/lib/qt/bin/uic maindlg.ui -o .ui/maindlg.h
g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/lib/qt/mkspecs/default -I. -I/usr/lib/qt/include -I.ui/ -I. -I.moc/ -o .obj/main.o main.cpp
main.cpp: In member function `virtual void MainForm::encode()':
main.cpp:19: invalid use of undefined type `struct QLineEdit'
/usr/lib/qt/include/qfiledialog.h:48: forward declaration of `struct QLineEdit'
main.cpp:20: invalid use of undefined type `struct QLineEdit'
/usr/lib/qt/include/qfiledialog.h:48: forward declaration of `struct QLineEdit'
make: *** [.obj/main.o] Ошибка 1

Вот так :(
А на 48-ой строке в qfiledialog.h написано так:

class QLineEdit;
anonymous

Вот еще maindlg.ui:

<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
<class>MainForm</class>
<widget class="QMainWindow">
    <property name="name">
        <cstring>MainForm</cstring>
    </property>
    <property name="geometry">
        <rect>
            <x>0</x>
            <y>0</y>
            <width>257</width>
            <height>98</height>
        </rect>
    </property>
    <property name="caption">
        <string>OggEncoder</string>
    </property>
    <widget class="QLabel">
        <property name="name">
            <cstring>textLabel1</cstring>
        </property>
        <property name="geometry">
            <rect>
                <x>20</x>
                <y>10</y>
                <width>30</width>
                <height>21</height>
            </rect>
        </property>
        <property name="text">
            <string>File:</string>
        </property>
    </widget>
    <widget class="QSpinBox">
        <property name="name">
            <cstring>spinBox1</cstring>
        </property>
        <property name="geometry">
            <rect>
                <x>60</x>
                <y>40</y>
                <width>61</width>
                <height>31</height>
            </rect>
        </property>
        <property name="maxValue">
            <number>9</number>
        </property>
    </widget>
    <widget class="QLabel">
        <property name="name">
            <cstring>textLabel2</cstring>
        </property>
        <property name="geometry">
            <rect>
                <x>10</x>
                <y>39</y>
                <width>50</width>
                <height>31</height>
            </rect>
        </property>
        <property name="text">
            <string>Quality:</string>
        </property>
    </widget>
    <widget class="QPushButton">
        <property name="name">
            <cstring>StartButton</cstring>
        </property>
        <property name="enabled">
            <bool>true</bool>
        </property>
        <property name="geometry">
            <rect>
                <x>140</x>
                <y>40</y>
                <width>101</width>
                <height>31</height>
            </rect>
        </property>
        <property name="text">
            <string>Encode</string>
        </property>
    </widget>
    <widget class="QPushButton">
        <property name="name">
            <cstring>BrowseButton</cstring>
        </property>
        <property name="geometry">
            <rect>
                <x>210</x>
                <y>10</y>
                <width>31</width>
                <height>21</height>
            </rect>
        </property>
        <property name="font">
            <font>
                <family>MicroTech</family>
                <bold>1</bold>
            </font>
        </property>
        <property name="text">
            <string>...</string>
        </property>
    </widget>
    <widget class="QLineEdit">
        <property name="name">
            <cstring>FileName</cstring>
        </property>
        <property name="geometry">
            <rect>
                <x>60</x>
                <y>10</y>
                <width>150</width>
                <height>23</height>
            </rect>
        </property>
    </widget>
</widget>
<toolbars>
</toolbars>
<connections>
    <connection>
        <sender>StartButton</sender>
        <signal>clicked()</signal>
        <receiver>MainForm</receiver>
        <slot>encode()</slot>
    </connection>
</connections>
<slots>
    <slot>encode()</slot>
</slots>
<pixmapinproject/>
<layoutdefaults spacing="6" margin="11"/>
</UI>

anonymous
()
Ответ на: комментарий от anonymous

Ну тебе же ясно говорят: недоопределенный тип. Ты используешь члены класса (что на строке 20) в том месте, откуда его тело недоступно (стока 48, как говорит gcc). Так делать нельзя.

anonymous
()

#include <qlineedit.h> в main.cpp тебе поможет есессна

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.