Попытка получить доступ к классу в пространстве имен Ui - PullRequest
1 голос
/ 11 марта 2012

Я пытаюсь показать QDialog из QMainWindow, используя Qt Creator.QDialog зовут О.Мое MainWindow и мой QDialog по умолчанию находятся в пользовательском интерфейсе пространства имен, но я получаю сообщение об ошибке при попытке создать новый файл About.

MainWindow.h

#include <QMainWindow>
#include "about.h"

namespace Ui {
    class MainWindow; 
}

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    void changeEvent(QEvent *e);

private slots:
    void on_actionAbout_activated();

private:
    Ui::MainWindow *ui;
    Ui::About *about; 
};

MainWindow.cpp

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

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

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

void MainWindow::on_actionAbout_activated()
{
    this->about = new Ui::About(this);
    this->about->show();
}

Ошибка:

invalid use of incomplete type ‘struct Ui::About’

Это происходит в строке:

this->about = new Ui::About(this);

Что происходит?Есть ли структура с именем About в пространстве имен Ui?

Ответы [ 2 ]

4 голосов
/ 11 марта 2012

Вам на самом деле не нужно использовать кучу, и вы не используете объявление UI:: диалога для его создания (это только класс для UI диалога,сам диалог).Используйте что-то вроде этого:

About dlg(this);
dlg.exec();

Предполагая, что вы хотите модальное диалоговое окно, обычно это поле about.В противном случае используйте QDialog::open()

2 голосов
/ 11 марта 2012
namespace Ui {
    class MainWindow; 
    class About;
}

и

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_about.h"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...