我刚刚在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;
}
我有一个非常类似的问题。我有一个非常类似的问题,其中一个UI动作被定义为其他动作并使用。ui has no member named xyz
只有这个编译错误,没有可能的解释。
我可以通过取消勾选下面的 Shadow build
选项的项目编译选项!
希望它能为某人节省我刚刚失去的30分钟:)
今天遇到了非常相同的问题。重新创建项目确实有效,尽管我已经找到了一个解决方案,不会让人重写一切 :) 在Debug中运行它。一旦你这样做了,问题就解决了。
创建一个新的项目就解决了... 我不知道为什么,我还在寻找解释。
我开始了一个新的项目,创建了stackedWidget,并测试了页面切换的代码......它只是简单地工作......我仍然不知道为什么其他的项目不能建立......。
检查了一遍又一遍的名字和一切。