0

我有一个名为 FirstPage 的类,我在主窗口中有一个 FirstPage 对象!现在我想访问主窗口中第一页的“Ui”但我不能!

    namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:

private:
    FirstPage* FrstPg;
};

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    FrstPg = new FirstPage (this);
    connect (FrstPg->ui->pushButton,SIGNAL(clicked(),FrstPg,SLOT(show());//Error ERRor
}

我应该怎么办 ?!

4

2 回答 2

0

要访问 FirstPage 的uiivar ,请Ui::FirstPage *ui;从FirstPage.h 中的部分private移至public部分

PS Uflex 关于命名空间的建议不正确:namespace Ui { class MainWindow; }用于Ui::MainWindow *ui;MainWindow.h中的前向声明

于 2013-06-16T14:22:37.363 回答
0

为什么您在命名空间中转发声明了一个MainWindow类,Ui但您的MainWindow声明不在此命名空间中?你最终有两个不同MainWindow的类,一个在全局命名空间中,一个在Ui命名空间中。我认为你想要做的是:

namespace Ui {

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:

private:
    FirstPage* FrstPg;
};

}

和 cpp 文件一样:

namespace Ui {

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    FrstPg = new FirstPage (this);
    connect (FrstPg->ui->pushButton,SIGNAL(clicked(),FrstPg,SLOT(show());//Error ERRor
}

}

现在关于您的错误,您为什么尝试在MainWindow课堂上而不是在FirstPage课堂上进行连接?你的信号和你的插槽都在这个类中,我看不出有什么理由在这里进行连接。有什么我错过的吗?

于 2013-06-16T13:15:59.957 回答