Qt Creator中没有名为stackedWidget的成员。

问题描述 投票:0回答:3

我刚刚在QT-Creator中设计了我的用户界面,由于主要的应用程序是基于两个面板,我决定使用StackedWidget来 "改变布局",而不需要打开一个新的窗口,因此,我添加了一个QTStackedWidget,名为:stackedWidget(默认)。

于是,我添加了一个QTStackedWidget,命名为:stackedWidget(默认)。

问题是在mainwindow.cpp中,我添加了一个自定义的SLOT,其中包含。

ui->stackedWidget->setCurrentIndex(1);

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

mainwindow.cpp:25: error: no member named 'stackedWidget' in 'Ui::MainWindow' ui->stackedWidget->setCurrentIndex(1); ~~ ^。

另外,在qt-creator本身,我无法给stackedWidget附加一个信号,因为它没有给我显示setCurrentIndex SLOT。

有什么建议吗?

请注意,我对C++是个菜鸟,几年前才用Qt和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;
}
c++ qt qt-creator qt5.2
3个回答
3
投票

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

我可以通过取消勾选下面的 Shadow build 选项的项目编译选项!

希望它能为某人节省我刚刚失去的30分钟:)


1
投票

今天遇到了非常相同的问题。重新创建项目确实有效,尽管我已经找到了一个解决方案,不会让人重写一切 :) 在Debug中运行它。一旦你这样做了,问题就解决了。


0
投票

创建一个新的项目就解决了... 我不知道为什么,我还在寻找解释。

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

检查了一遍又一遍的名字和一切。

© www.soinside.com 2019 - 2024. All rights reserved.