Qt Ui访问没有源文件

时间:2015-02-07 22:20:23

标签: qt

我可以在其他源文件中使用Qt design Form class作为QMessageBox的种类吗?我有一个包含源文件的类,以及一个没有源文件的ui文件。在Ui命名空间中,我只能添加头文件,而不能添加ui元素。我需要使用QLineEditQPushButtons添加许多此类拨号框。

namespace Ui {
class MainWindow;
}

1 个答案:

答案 0 :(得分:1)

要使用.ui表单,您需要使用uic。通过启动命令uic basicform.ui,它将在输出中写入生成的。所以你可以这样做:

uic basicform.ui > ui_basicform.h

然后在.cpp中包含ui_basicform.h,并且与创建普通表单类时相同(添加ui名称空间,创建ui属性,初始化它,运行setupUi方法)。

例如,Form为QWidget,在mainwindow.h中有

namespace Ui {
class MainWindow;
}

添加class Form; 然后在MainWindow类的属性中添加Ui::Form ui_form;

在mainWindow.cpp之后,初始化列表如下:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

添加ui_form(new Ui::Form)

然后在你得到的构造函数中:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    ui_form(new Ui::Form)
{
    ui->setupUi(this);
}

现在它就像:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    ui_form(new Ui::Form)
{
    ui->setupUi(this);
    QWidget* test = new QWidget(this);
    ui_form->setupUi(test);
    ui->centralWidget->layout()->addWidget(test);
}