Если вам нужны динамические диалоги, то можно сделать так:
QUiLoader uiLoader;
QFile file("sortdialog.ui");
QWidget *sortDialog = uiLoader.load(&file);
if (sortDialog) {
....
}
Источник.
Но скорее всего вам нужно просто создать форму с классом. Для этого в Qt Creator выбираете "File" -> "New File or Project" -> "Qt" -> "Qt Designer Form Class".
При желании в новый файл формы *.ui можно скопировать содержимое из старого (или вообще перезаписать его вашим старым *.ui). Всё будет работать.
А если вам нужно зафиксировать изменения в форме из внешнего класса, то всегда можно воспользоваться указателем:
TestClass.h:
#ifndef TESTCLASS_H
#define TESTCLASS_H
#include "ui_MainWindow.h"
class TestClass
{
public:
TestClass();
void changeTextOnForm(Ui_MainWindow *mainWindow);
};
#endif // TESTCLASS_H
TestClass.cpp:
#include "TestClass.h"
TestClass::TestClass()
{
}
void TestClass::changeTextOnForm(Ui_MainWindow *mainWindow)
{
mainWindow->label_2->setText(QString("Text from ") + Q_FUNC_INFO);
mainWindow->textBrowser->append(mainWindow->label_2->text());
}
MainWindow.cpp:
...
void MainWindow::on_pushButton_clicked()
{
TestClass testClass;
testClass.changeTextOnForm(this->ui);
}
...