Файл .ui просто хранит код для элементов графического интерфейса.Этот код генерируется QtDesigner в большинстве случаев.Это похоже на файл .rc и графический интерфейс, сгенерированный мастером в Visual Studio.Этот файл будет загружен во время компиляции (по умолчанию) или во время выполнения через QUiLoader
.Если вы хотите динамически генерируемый пользовательский интерфейс во время выполнения, последний вариант, который вам нужно рассмотреть, начиная с QtUiTools
Отметим, что класс Form
не существует в Qt, так что этоили класс, который вы сделали, или опечатка.Если вы просто хотите объявить и показать окно или диалоговое окно, тогда производите от соответствующего базового класса и вызывайте show()
или соответствующий метод.
Например, что-то простое, например, где MainWindow
- это ваш собственный пользователькласс, производный от QMainWindow
:
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(application);
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show();
return app.exec();
}
Редактировать:
Ах, так что Form
является QWidget
классом.Вам не хватает макроса Q_OBJECT
в вашем классе Form
?Вы также, как правило, вызываете setupUi
только один раз, чтобы главное окно приложения загружало ваши ресурсы, и в таких случаях, когда пользовательские подклассы часто проще программно определить объекты графического интерфейса для класса.
//Form.h
class Form : public QWidget
{
Q_OBJECT // this is needed for the MOC aka qmake
public:
Form(QWidget *parent);
virtual ~Form();
private:
QTextEdit m_text;
};
//Form.cpp
#include "form.h"
Form::Form(QWidget *parent) : QWidget(parent)
{
setCentralWidget(&m_text);
}
Form::~Form()
{
}
Звучитпочти как вы путаете ваш объект класса с вашими файлами пространства имен пользовательского интерфейса.