Qt Creator没有名为stackedWidget的成员

时间:2014-07-03 09:16:06

标签: c++ qt qt-creator qt5.2

我在QT-Creator中设计了我的ui,并且由于主要应用程序基于两个面板,我决定使用StackedWidget来改变布局"没有打开新窗口。

所以,我添加了一个名为:stackedWidget(默认)的QTStackedWidget。

问题在于mainwindow.cpp,我添加了一个包含以下内容的自定义SLOT:

ui->stackedWidget->setCurrentIndex(1);

当我构建这个时,编译器说:

  

mainwindow.cpp:25:错误:没有名为' stackedWidget' in' Ui :: MainWindow'
     UI-> stackedWidget-> setCurrentIndex(1);
     ~~ ^

同样在qt-creator本身我无法将信号附加到stackedWidget,因为它没有向我显示setCurrentIndex SLOT ......

任何建议?

请注意,我是一个使用C ++的菜鸟我几年前刚用过PyQt4。

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;

private slots:
    void showOtherPage();
    void showMainPage();
};

#endif // MAINWINDOW_H

mainiwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    qDebug() << "MainWindow - Debug Mode ON";
    connect(ui->btnOther, SIGNAL(clicked()), SLOT(showOtherPage()));
}

void MainWindow::showOtherPage()
{
    qDebug() << "Showing Other Page";
    ui->stackedWidget->setCurrentIndex(1);
}

void MainWindow::showMainPage()
{
    qDebug() << "Showing Main Page";
    ui->stackedWidget->setCurrentIndex(0);
}


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

3 个答案:

答案 0 :(得分:1)

我有一个非常类似的问题。 其中一个UI操作被定义为其他操作并使用。 我只有ui has no member named xyz编译错误,没有可能的解释。

我可以通过取消选中/检查项目编译选项中的Shadow build选项来解决它!

希望它能为我失去的30分钟拯救某人:)

答案 1 :(得分:1)

今天遇到了同样的问题。重新创建项目确实可以,尽管我找到了一种解决方案,该方案不会重写所有内容:)在Debug中运行它。完成后,问题就解决了。

答案 2 :(得分:0)

创建一个新项目修复它...我不知道为什么,我还在寻找解释。

我开始了一个新项目,创建了stackedWidget,并测试了页面切换的代码...它只是简单地工作......我仍然不知道为什么另一个无法构建...

一次又一次地检查姓名和所有内容。