Использование файлов .ui объясняется в документации Qt:
http://doc.qt.io/archives/qt-4.7/designer-using-a-ui-file.html
Резюме:
Самый простой способ обработки файла .ui - это запустить его через uic (компилятор интерфейса пользователя) во время компиляции. Это делается автоматически, если файл .ui включен в файл вашего проекта (.pro). («Добавить новый», вероятно, сделал это автоматически в вашем случае.) Тогда вам нужно только включить сгенерированный заголовочный файл C ++ в исходный файл. Его имя должно быть что-то вроде «ui_nameoftheoriginaluifile.hpp». Конечно, после этого вам нужно создать экземпляр формы, определенной в файле .hpp.
Отредактировано, чтобы добавить:
Есть несколько проблем с вашим кодом, начиная с его читабельности. Я не знаю, использовали ли вы ранее объектно-ориентированный язык, но очень простое правило в C ++ - начинать имена классов с заглавных букв, чтобы их было легче отличить от объектов и других переменных. Таким образом, имена классов должны быть «About», «Parent» и т. Д.
Ошибка компиляции вызвана использованием "about" вместо имени класса, фактически используемого в файле "ui_about.hpp" - "MainWindow". (Это определяется именем формы, которую вы использовали в файле .ui.)
Если вы используете Qt Creator: удерживайте нажатой клавишу Ctrl и щелкните по имени файла "ui_about.h" в директиве include. Это откроет его для проверки. Попробуйте выяснить, как это работает.
Вы также не определили функцию opDialog () как член класса «parent» в «parent.cpp», что вызывает другую ошибку во время компиляции.
Вы также не должны использовать QMainWindow для диалогового окна about. Предполагается, что QMainWindow является главным окном вашего приложения - его больше не должно быть.
Итак, о.ч:
namespace Ui {
class MainWindow;
}
class about : public QMainWindow {
Q_OBJECT
public:
about(QWidget *parent = 0);
~about();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
};
И начало about.cpp:
#include "about.h"
#include "ui_about.h"
about::about(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}