在Qt 5中,表单的头文件在哪里?

时间:2014-05-22 21:59:56

标签: qt

我是Qt的新手,本书适用于Qt 4.

当我创建dialog.ui或mainwindow.ui文件时,它将它放在Folder表单下。我没有看到任何头文件或类似的东西。如何在main.cpp文件中引用dialog.ui呢?

获取错误ui使用未定义的类Ui :: MainWindow。

谢谢!

#include <QApplication>
#include <QDialog>

#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Ui::MainWindow ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->show();

    return a.exec();
}

.pro文件:

#-------------------------------------------------
#
# Project created by QtCreator 2014-05-22T17:21:36
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled7
TEMPLATE = app


SOURCES += main.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

自动生成的qt 5实现:

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

MainWindow::~MainWindow()
{
    delete ui;
}

1 个答案:

答案 0 :(得分:0)

Ui::MainWindow是一个私有类,只能由MainWindow类访问。您无法在其他地方使用它(例如main())。

Ui::MainWindow ui_mainwindow.h 中定义,在您编译应用时会自动生成。

要基于 mainwindow.ui 创建GUI,只需实例化MainWindow对象:

#include <QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow mw;
    mw.show();

    return a.exec();
}

注意:

  1. 在Qt Creator中创建新的 Qt Widgets应用程序时, main.cpp 是自动的 为你生成的。你不需要自己写。

  2. Qt的User Interface Compiler解析 mainwindow.ui 并生成 您的构建目录中的 ui_mainwindow.h 。它在您构建时自动运行 你的应用程序在Qt Creator中。您无需手动运行它。