Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: alsav22   (22.04.2012 в 00:34)
VC 2010 Express и qt-win-opensource-4.8.1-vs2010.
Сначала : прописать папку c:\Qt\4.8.1\bin в Path (один раз).
Для каждого проекта:
Свойста проекта, Все конфигурации, C/C++, Общие, Дополнительные каталоги включаемых файлов, добавить:
C:\Qt\4.8.1\include;C:\Qt\4.8.1\include\QtCore;C:\Qt\4.8.1\include\QtGui;C:\Qt\4.8.1\include\ActiveQt
Свойста проекта, Все конфигурации, Компоновщик, Общие, Дополнительные каталоги библиотек, добавить:
C:\Qt\4.8.1\lib
Свойста проекта, Все конфигурации, Компоновщик -> Ввод -> Дополнительные зависимости, добавить:
qtmaind.lib;QtCore4.lib;QtGui4.lib;
Свойста проекта, Все конфигурации, События постороения, Событие перед постороением, Командная строка, добавить: moc -o main.moc main.cpp

Создал проект:
#include <QtGui>
#include <QtCore>

class MainWindow : public QMainWindow
{
    public:
    explicit MainWindow(QWidget *parent = 0);
};

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
          QLabel* label=new QLabel(this);
label->setText("Hello World!");
label->setAlignment(Qt::AlignCenter);
setCentralWidget(label);
}

 int main(int argc, char **argv)
 {
QApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
 }


Всё нормально работает. Если разделить на три файла: заголовочный, с объявлением класса, *.cpp с реализацией класса и *.cpp с функцией main, то компоновщик пишет о неразрешённых внешних символах.
Наверное, это связано с командной строкой, которая запускается перед постороением: moc -o main.moc main.cpp. В ней записан только одни файл: main.cpp. Как сделать, чтобы moc обрабатывал несколько файлов?
Сейчас написал и решил ещё раз проверить. Разделил, приведённый выше код, на три файла и всё нормально построилось. Начал вспоминать, почему перед этим не компоновалось.Вспомнил что я вставлял в объявление класса макрос Q_OBJECT. Если его вставить в приведённый выше код, то компоновщик сообщит о трёх неразрешённых внешних элементах. Если в конце кода написать #include "main.moc", то всё построится нормально. Как сделать, чтобы при трёх файлах и наличии макросов Qt всё нормально строилось?


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: